{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "#第三周作业 在 Rental Listing Inquiries 数据上练习 xgboost 参数调优"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "#读取必要的工具包\n",
    "\n",
    "from xgboost import XGBClassifier\n",
    "\n",
    "import xgboost as xgb\n",
    "# 计算分类正确率\n",
    "from sklearn.metrics import accuracy_score\n",
    "\n",
    "import pandas as pd \n",
    "import numpy as np\n",
    "\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "from sklearn.model_selection import StratifiedKFold\n",
    "\n",
    "from sklearn.metrics import log_loss\n",
    "\n",
    "from matplotlib import pyplot\n",
    "import seaborn as sns\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "#读取数据\n",
    "dpath = 'E:/data/'\n",
    "\n",
    "train = pd.read_csv(dpath +\"RentListingInquries_FE_train.csv\")\n",
    "test  = pd.read_csv(dpath +\"RentListingInquries_FE_test.csv\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x267ddde6eb8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#看看target分布情况\n",
    "sns.countplot(train.interest_level);\n",
    "pyplot.xlabel('interest_level');\n",
    "pyplot.ylabel('Number of occurrences');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "#样本分布不均匀"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>bathrooms</th>\n",
       "      <th>bedrooms</th>\n",
       "      <th>price</th>\n",
       "      <th>price_bathrooms</th>\n",
       "      <th>price_bedrooms</th>\n",
       "      <th>room_diff</th>\n",
       "      <th>room_num</th>\n",
       "      <th>Year</th>\n",
       "      <th>Month</th>\n",
       "      <th>Day</th>\n",
       "      <th>...</th>\n",
       "      <th>virtual</th>\n",
       "      <th>walk</th>\n",
       "      <th>walls</th>\n",
       "      <th>war</th>\n",
       "      <th>washer</th>\n",
       "      <th>water</th>\n",
       "      <th>wheelchair</th>\n",
       "      <th>wifi</th>\n",
       "      <th>windows</th>\n",
       "      <th>work</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.5</td>\n",
       "      <td>3</td>\n",
       "      <td>3000</td>\n",
       "      <td>1200.0</td>\n",
       "      <td>750.000000</td>\n",
       "      <td>-1.5</td>\n",
       "      <td>4.5</td>\n",
       "      <td>2016</td>\n",
       "      <td>6</td>\n",
       "      <td>24</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.0</td>\n",
       "      <td>2</td>\n",
       "      <td>5465</td>\n",
       "      <td>2732.5</td>\n",
       "      <td>1821.666667</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>6</td>\n",
       "      <td>12</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>2850</td>\n",
       "      <td>1425.0</td>\n",
       "      <td>1425.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>4</td>\n",
       "      <td>17</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>3275</td>\n",
       "      <td>1637.5</td>\n",
       "      <td>1637.500000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>4</td>\n",
       "      <td>18</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1.0</td>\n",
       "      <td>4</td>\n",
       "      <td>3350</td>\n",
       "      <td>1675.0</td>\n",
       "      <td>670.000000</td>\n",
       "      <td>-3.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>4</td>\n",
       "      <td>28</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 227 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   bathrooms  bedrooms  price  price_bathrooms  price_bedrooms  room_diff  \\\n",
       "0        1.5         3   3000           1200.0      750.000000       -1.5   \n",
       "1        1.0         2   5465           2732.5     1821.666667       -1.0   \n",
       "2        1.0         1   2850           1425.0     1425.000000        0.0   \n",
       "3        1.0         1   3275           1637.5     1637.500000        0.0   \n",
       "4        1.0         4   3350           1675.0      670.000000       -3.0   \n",
       "\n",
       "   room_num  Year  Month  Day  ...   virtual  walk  walls  war  washer  water  \\\n",
       "0       4.5  2016      6   24  ...         0     0      0    0       0      0   \n",
       "1       3.0  2016      6   12  ...         0     0      0    0       0      0   \n",
       "2       2.0  2016      4   17  ...         0     0      0    0       0      0   \n",
       "3       2.0  2016      4   18  ...         0     0      0    0       0      0   \n",
       "4       5.0  2016      4   28  ...         0     0      0    1       0      0   \n",
       "\n",
       "   wheelchair  wifi  windows  work  \n",
       "0           0     0        0     0  \n",
       "1           0     0        0     0  \n",
       "2           0     0        0     0  \n",
       "3           0     0        0     0  \n",
       "4           0     0        0     0  \n",
       "\n",
       "[5 rows x 227 columns]"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# drop ids and get labels\n",
    "y_train = train['interest_level']\n",
    "\n",
    "\n",
    "X_train = train.drop([\"interest_level\"], axis=1)\n",
    "X_train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "# prepare cross validation\n",
    "kfold = StratifiedKFold(n_splits=5, shuffle=True, random_state=3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "#找到最佳的n_estimators参数\n",
    "#直接调用xgboost内嵌的交叉验证（cv），可对连续的n_estimators参数进行快速交叉验证\n",
    "\n",
    "#而GridSearchCV只能对有限个参数进行交叉验证\n",
    "def modelfit(alg, X_train, y_train, cv_folds=None, early_stopping_rounds=10):\n",
    "    xgb_param = alg.get_xgb_params()\n",
    "    xgb_param['num_class'] = 3\n",
    "    \n",
    "    #直接调用xgboost，而非sklarn的wrapper类\n",
    "    xgtrain = xgb.DMatrix(X_train, label = y_train)\n",
    "        \n",
    "    cvresult = xgb.cv(xgb_param, xgtrain, num_boost_round=alg.get_params()['n_estimators'], folds =cv_folds,\n",
    "             metrics='mlogloss', early_stopping_rounds=early_stopping_rounds)\n",
    "  \n",
    "    cvresult.to_csv('1_nestimators.csv', index_label = 'n_estimators')\n",
    "    \n",
    "    #最佳参数n_estimators\n",
    "    n_estimators = cvresult.shape[0]\n",
    "    \n",
    "    # 采用交叉验证得到的最佳参数n_estimators，训练模型\n",
    "    alg.set_params(n_estimators = n_estimators)\n",
    "    alg.fit(X_train, y_train, eval_metric='mlogloss')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "#params = {\"objective\": \"multi:softprob\", \"eval_metric\":\"mlogloss\", \"num_class\": 3}\n",
    "xgb1 = XGBClassifier(\n",
    "        learning_rate =0.1,\n",
    "        n_estimators=1000,  #数值大没关系，cv会自动返回合适的n_estimators\n",
    "        max_depth=5,\n",
    "        min_child_weight=1,\n",
    "        gamma=0,\n",
    "        subsample=0.3,\n",
    "        colsample_bytree=0.8,\n",
    "        colsample_bylevel=0.7,\n",
    "        objective= 'multi:softprob',\n",
    "        seed=3)\n",
    "\n",
    "modelfit(xgb1, X_train, y_train, cv_folds = kfold)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Anaconda\\lib\\site-packages\\ipykernel_launcher.py:1: FutureWarning: from_csv is deprecated. Please use read_csv(...) instead. Note that some of the default arguments are different, so please refer to the documentation for from_csv when changing your function calls\n",
      "  \"\"\"Entry point for launching an IPython kernel.\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAEXCAYAAABCjVgAAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzt3XmcHHW97//Xp7tnX5PMZJ1sLGGTsIVdhAMugGyiIigq6JUrv4PL8agHr/44HK4IiscNuSp6geMGorgAoqKsetiSAAECBJKQfV8ms6/9uX98a2Y6k5nMJEx3zaTfz8ejHt1dXV31meqefnfVt+pb5u6IiIgAJOIuQERERg+FgoiI9FIoiIhIL4WCiIj0UiiIiEgvhYKIiPRSKIhkMLP/ZWY/ibsOkbgoFMYYMys3sxVm9sGMcRVmtsrM3pcxbp6Z3W9m282s3sxeNrPrzWxc9PxlZtZtZk3RsNzMrsxy7aeZ2ZpsLmNPDFSPu3/N3f9Hlpa3wszeno15Z0Ou3q+xtl72dQqFMcbdm4ArgO+aWW00+hvAAnf/DYCZnQQ8Cvw3cLC7VwNnAl3AERmze9Ldy929HHgf8A0zOyo3f4nsCTNLxV2D5Al31zAGB+AO4E7gNGArMCXjuX8ANw/x+suAf/Qb9wzwwYzH5wGLgXpCyByS8dwh0bj6aJrzMp47G3gZaATWAp8HyoBWIA00RcPUQf6uW4A/Rq9/Gth/GOvjYOCvwDZgCXDR3tQDXAv8PHrdLMCBy4HVwHbgk8CxwAvR3/79jOXsDzwcvR9bgF8A1dFzP4uW1Rot64vDWMcrgH+LltUOpKLHa6O/ZQlwxgDr4gRgA5DMGPce4IXo/nHAAqAB2Ah8a5B1ehqwZpDnqoCfApuBlcBXgET0XBL4z2gdvAFcFa3H1CDzWgG8fZDnPgEsjd7Xe3s+M4AB3wY2ATuidfSWwd7vuP9fx9IQewEa9vKNg3HA+ugf7/KM8WVAN3DaEK+/jIxQiL7o6oE50eM5QDPwDqAA+GL0z1kYPV4K/K/o8enRP+BB0WvXA6dk1Hl0dH/QL5mMOu6IvgCOi74EfwHcNcRryghf2pdHrzk6Wi+H7Wk9DBwKPwSKgXcCbcDvgYnAtOhL6dRo+gOi9VUE1AKPA9/JmPdOX367W8cZ0z8PTAdKgIOiv3NqRn0DBiawDHhHxuNfA1dH958EPhzdLwdOGGQeg75fhED4A1AR1fEa8PHouU8SvpTrovX9N/YiFKLP1Zbo/SwCbgYej557F7AQqCYExCFEP4wGe781DG/Q7qMxyt23E35hlgK/zXhqHGG34IaeEWb2jahdodnMvpIx7QnR+CbCVsLPgNej5z4A/NHd/+runcA3CV9MJxF+iZYDN7p7h7s/DNwPXBK9thM41Mwq3X27uz+7h3/eb939GXfvIoTCkUNMfw6wwt1vd/euaHn3EHaJjUQ9/9vd29z9QcKX+J3uvsnd1wJ/B44CcPel0fpqd/fNwLeAU3cz392t4x7fc/fV7t5KCPui6G8pcPcV7r5skHnfSfR+mFkF4dfznRnr4wAzq3H3Jnd/ak9Whpklo9q/5O6N7r6CsGXw4WiSi4Dvuvua6HN6457MP8OHgNvc/Vl3bwe+BJxoZrOiv6GCsIVo7v6Ku6/P+PvezPud1xQKY5SZXUr4hfY34OsZT20n7KaY0jPC3b/ooV3hd4Rf0j2ecvdqD20Kk4HDgK9Fz00l7BbomUea8Ct1WvTc6mhcj5XRcwDvJXwJrTSzx8zsxD388zZk3G8hBNDuzASOjwKu3szqCV8ok0eono0Z91sHeFwOYGYTzewuM1trZg3Az4Ga3cx3d+u4x+qM55cCnyVszWyKljV1kHn/ErjQzIqAC4Fn3b1nWR8nbKW8ambzzeyc3dQ4kBrCFuLKjHGZ7//UzLr73d8T/ddPE2HX3LToh8j3CbsaN5rZrWZWGU36Zt/vvKZQGIPMbCJhf+ongP8JXGRmbwNw92bCfvgL92Se7r6R8Ov63GjUOsKXbc8yjbAbY2303HQzy/z8zIiew93nu/v5hF0svwfu7lnMntS0B1YDj0UB1zOUu/uVOa7nhmiec929EriUsGujR//l7W4dD/gad/+lu781ep2z8w+CzOleJnyhngV8kBASPc+97u6XENbH14HfmFnZ8P9MthB+jc/MGNf7/hN239RlPDd9D+adqf/6KQMm0Pc5+567H0P4MTMH+EI0frD3W4ZBoTA2fR/4vbs/Em0yfxH4cfSrkOjxx8zs6ihAMLM6YPZgMzSzCYTGyMXRqLuBd5vZGWZWAPwrobHzCULoNANfNLMCMzuNECZ3mVmhmX3IzKqiXSINhN0eEH5hTzCzqhFaDz3uB+aY2YejegrM7FgzOyTH9VQQGpHrzWwa0ZdUho3AfhmPd7eOd2FmB5nZ6dH73EbYSukeaNrIL4FPA28jtCn0zOdSM6uNtkzqo9GDzsfMijMHwpbo3cD10eHQM4HPEbaMev6uz5jZNDOrJjSOD6Wg33JSUf2Xm9mR0d/8NeBpd18Rvb/HR+utOVof3UO83zIccTdqaNizAbiA8Auqut/4h4DrMx4fDzxA+KevB14CrgcmRM9fRvhn6TnyZhNhn/PEjHm8h9BguAN4jKjhNnrusGjcjmia90TjC4E/E3ZjNQDzgbdmvO42wi6AegY/+uirGY9PY4jG6Wi6gwhHLG2O5v8woS1ij+ph4IbmVMb0a8hoxCd8EX4lY50sjNbn84Qv+TUZ054PrIqW9flhrOMV7NwwPZfQ9tNIaIy/f6B1mDH9DMIX+B/7jf959H43EX4EXDDI60+L/v7+wwGEtqufR+t7NXANfUcfpQhbslsJRx/9C2HLwgZZzooBlvHV6LlPEhrNe/7eumj8GYQjjproO9KrfKj3W8PQg0UrWEQkK8zsLOCH7j5zyIkldtp9JCIjysxKzOxsM0tFu9H+nXCQg4wB2lKQMcHMTgH+NNBzHo6eklHCzEoJu8IOJrR7/BH4jLs3xFqYDItCQUREemn3kYiI9BpznWzV1NT4rFmz4i5DRGRMWbhw4RZ3rx1qujEXCrNmzWLBggVxlyEiMqaY2cqhp9LuIxERyaBQEBGRXgoFERHppVAQEZFeCgUREemlUBARkV4KBRER6ZU3obBsUyP3zX8NdeshIjK4vAmFLX++kXP/eCzNLS1xlyIiMmrlTSikysYDsGPLhiGmFBHJX3kTCoWVocuPxm3rY65ERGT0yptQKKqaCEDrjk0xVyIiMnrlTSiUj5sMQPuOzTFXIiIyeuVNKFTWhFDoatoScyUiIqNX3oRCWWUNaTdoViiIiAwmb0LBkil2WAWJ1m1xlyIiMmrlTSgANCYqKWxXKIiIDCavQqGloJqizvq4yxARGbXyKhTaC8ZR1qVQEBEZTF6FQmfxeCrTO+IuQ0Rk1MpaKJjZbWa2ycxeGuR5M7PvmdlSM3vBzI7OVi09vGQ81TTS3tmZ7UWJiIxJ2dxSuAM4czfPnwUcGA1XAD/IYi0AWFkNKUuzY/vWbC9KRGRMyloouPvjwO4O9Tkf+KkHTwHVZjYlW/UAFFSE/o8a1CmeiMiA4mxTmAaszni8Jhq3CzO7wswWmNmCzZv3vpuKosrQ/1Fz/ca9noeIyL4szlCwAcYNeAUcd7/V3ee5+7za2tq9XmDZuBAK7eoUT0RkQHGGwhpgesbjOmBdNhdYMSHsnepsVKd4IiIDiTMU7gU+Eh2FdAKww92zerGDivGTAEirUzwRkQGlsjVjM7sTOA2oMbM1wL8DBQDu/kPgAeBsYCnQAlyerVp6JIvKaPVCbO38bC9KRGRMyloouPslQzzvwD9na/mDqU+OJ1VckevFioiMCXl1RjNAY8EESjq0+0hEZCB5FwptRTVUdKmnVBGRgeRdKHSW1DIuvZ2w90pERDLlXShQNolx1kR9Q1PclYiIjDp5FwqpqnBY6rbNWT0lQkRkTMq7UCgeF05ga9yyNuZKRERGn7wLhfIJdQC0blcoiIj0l3ehUD0x9LnXUa+eUkVE+su7UCgdNxkAb1RPqSIi/eVdKFiqiHoqSLaoUzwRkf7yLhQAGpLjKWxTKIiI9JeXodBSOIGyDl2SU0Skv7wMhfbiGqrS2+MuQ0Rk1MnLUHi5sYQa305bR1fcpYiIjCp5GQqHzplDiXWwabMuyykikikvQ6F4fDiBbeuGFfEWIiIyyuRlKFRMmglA86aVMVciIjK65GUojJ88G4CO7WtirkREZHTJy1AoHj+NNIbvUP9HIiKZ8jIUSBaw3cZR2Lw+7kpEREaV/AwFYEdBLaVt6v9IRCRT3oZCa8kkqrvU1YWISKa8DYWu8qlM9K20dnTHXYqIyKiRt6GQqJpGhbWyQSewiYj0yttQKIpOYNu+fkWsdYiIjCZ5GwoVE2cB0LRZJ7CJiPTI21AYPyU6gW3b6pgrEREZPfI2FIrGhWs1+/LHYq5ERGT0yGoomNmZZrbEzJaa2dUDPD/TzB4ysxfM7FEzq8tmPTtJFbI1MYHCouKcLVJEZLTLWiiYWRK4BTgLOBS4xMwO7TfZN4Gfuvtc4DrghmzVM5AdhVOoaNNZzSIiPbK5pXAcsNTdl7t7B3AXcH6/aQ4FHoruPzLA81nVVjaN2u6NdHWnc7lYEZFRK5uhMA3IbMVdE43LtAh4b3T/PUCFmU3oPyMzu8LMFpjZgs2bR+4s5HT1DKawlQ31TSM2TxGRsSyboWADjPN+jz8PnGpmzwGnAmuBXa6R6e63uvs8d59XW1s7YgUW1cwmZWk2rlkxYvMUERnLshkKa4DpGY/rgHWZE7j7One/0N2PAr4cjduRxZp2Ujl5PwAa1r+eq0WKiIxq2QyF+cCBZjbbzAqBi4F7Mycwsxoz66nhS8BtWaxnF+OmzQGgfcuKXC5WRGTUyloouHsXcBXwF+AV4G53X2xm15nZedFkpwFLzOw1YBJwfbbqGUjh+OmkMax+VS4XKyIyaqWyOXN3fwB4oN+4azLu/wb4TTZr2K1UIdsSEyhq0mU5RUQgj89o7tFQNJXKdp2rICICCgWWtI9nYnojbZ26roKISN6Hwn6F25nCVlZvro+7FBGR2OV9KJQc91GS5mxY9VrcpYiIxC7vQ2H8jEMAaFq7JOZKRETil/ehUD4lnKvQvWVpzJWIiMQv70OB0gk0WxkFO96IuxIRkdgpFMzYVjSd6lZdgU1ERKEAtFbOZGr3Oprbd+mLT0QkrygUAJuwP1NtCys3bYu7FBGRWCkUgNJJc0ias2mVeksVkfymUAAmzDwYgD89+o+YKxERiZdCASiedBAAJ1TrrGYRyW8KBYDS8TQmKinasSzuSkREYqVQiGwv249JbSvo6k7HXYqISGwUCpHO8XPY39awcmtz3KWIiMRGoRApnnIo1dbMylUr4i5FRCQ2CoXIhNmHA1C/8qWYKxERiY9CIVI85TAAuja+HHMlIiLxUSj0qJhMi5VRXK/eUkUkfykUepixjDpqW1fQ0aUjkEQkPw0ZCma2v5kVRfdPM7NPm1l19kvLvcoZb+GAxBqWbmqKuxQRkVgMZ0vhHqDbzA4A/i8wG/hlVquKSWndW6i1Bpa+sTzuUkREYjGcUEi7exfwHuA77v4vwJTslhWP8fsdA0D9G8/FXImISDyGEwqdZnYJ8FHg/mhcQfZKik9ySjgs1Ta+GHMlIiLxGE4oXA6cCFzv7m+Y2Wzg59ktKyal46kvmMS4hiWk0x53NSIiOZcaagJ3fxn4NICZjQMq3P3GbBcWl+ZxhzBnw+us2tbCrJqyuMsREcmp4Rx99KiZVZrZeGARcLuZfSv7pcWjYOpc9rP1vLJ6U9yliIjk3HB2H1W5ewNwIXC7ux8DvH04MzezM81siZktNbOrB3h+hpk9YmbPmdkLZnb2npU/8sbtfzQpS3P3Aw/GXYqISM4NJxRSZjYFuIi+huYhmVkSuAU4CzgUuMTMDu032VeAu939KOBi4P8Md/7ZUjDtCABOKF0bcyUiIrk3nFC4DvgLsMzd55vZfsBwLmZ8HLDU3Ze7ewdwF3B+v2kcqIzuVwHrhld2FlXPoi1ZTtX2xXTq2goikmeGDAV3/7W7z3X3K6PHy939vcOY9zRgdcbjNdG4TNcCl5rZGuAB4FMDzcjMrjCzBWa2YPPmzcNY9JuQSNA4/nAO53VeXd+Y3WWJiIwyw2lorjOz35nZJjPbaGb3mFndMOZtA4zrf5znJcAd7l4HnA38zMx2qcndb3X3ee4+r7a2dhiLfnOKZh3HQbaaF1bEv+EiIpJLw9l9dDtwLzCV8Ev/vmjcUNYA0zMe17Hr7qGPA3cDuPuTQDFQM4x5Z1XF/ieQsjRbX3sm7lJERHJqOKFQ6+63u3tXNNwBDOfn+nzgQDObbWaFhIbke/tNswo4A8DMDiGEQpb3Dw3N6uYBkFz/bMyViIjk1nBCYYuZXWpmyWi4FNg61Iui/pKuIjRSv0I4ymixmV1nZudFk/0r8AkzWwTcCVzm7vGfSlw+kcbiKcxse4VNDW1xVyMikjNDntEMfAz4PvBtQpvAE4SuL4bk7g8QGpAzx12Tcf9l4OThFptL3VOO4cjlT/HMim2cM3dq3OWIiOTEcI4+WuXu57l7rbtPdPcLCCey7dMqDjyJOtvCq0tejbsUEZGc2dsrr31uRKsYhZIzTwSg440nY65ERCR39jYUBjrcdN8yeS6diRKmNjxPfUtH3NWIiOTE3oZC/I3B2ZZM0TLpaI5NLGH+iu1xVyMikhODhoKZNZpZwwBDI+GchX1e2QEnc7Ct4obfPRV3KSIiOTHo0UfuXpHLQkaj1KyT4O/OvNSyuEsREcmJvd19lB/qjiVNglmNz7Fme0vc1YiIZJ1CYXeKymmffAwnJV7i8de2xF2NiEjWKRSGUHzQ6cxNvMHCV5fHXYqISNYpFIZg+59OAqfltUd1fQUR2ecNp+vsgY5CWh11p71fLoqM1bRj6EqVcpK9yDNvbIu7GhGRrBrOlsK3gC8Qus2uAz4P/JhwJbXbslfaKJEswGadwinJl3hw8Ya4qxERyarhhMKZ7v4jd2909wZ3vxU4291/BYzLcn2jQvLAtzPLNvDKS88xGjpxFRHJluGEQtrMLjKzRDRclPFcfnxDznkXAIe3PMXidQ0xFyMikj3DCYUPAR8GNkXDhwnXVS4hXC9h3zduJl01h3BG4lmu+OmCuKsREcmaIa+n4O7LgXMHefofI1vO6JU6+CyO2/JdyryZ7rSTTOz7fQKKSP4ZztFHddGRRpvMbKOZ3WNmdbkoblSZcyYpujm46WmeWKYT2URk3zSc3Ue3E66tPJVwBNJ90bj8UjcPL5vEeYXzuWfhmrirERHJiuGEQq273+7uXdFwB1Cb5bpGn0QSO+wCTuE5Hlq0jIa2zrgrEhEZccMJhS1mdqmZJaPhUmBrtgsbld5yIcV0cLot5IEX1sddjYjIiBtOKHwMuAjYAKwH3gdcns2iRq264/DKOi4umc89z2oXkojse4YMBXdf5e7nuXutu0909wuAC3NQ2+iTSGA4x3UvZNmKlazY0hx3RSIiI2pvO8T73IhWMZZ86NckSXNe8gku+bGuyCYi+5a9DYX8PUh/0mEw5Qg+Vv4ELR3dtHR0xV2RiMiI2dtQyI/uLQZz5IeY0b6UqW1LuefZtXFXIyIyYgYNhUG6zG4ws0bCOQv56y3vwzE+mbqP6+9/me50fmekiOw7Bg0Fd69w98oBhgp3H7J7jH1a2QRs7gd4d9HzpLqaeOBFHZ4qIvsGXXltbx13BamuFj5Z/Qw3P/w6aW0tiMg+IKuhYGZnmtkSM1tqZlcP8Py3zez5aHjNzOqzWc+IqjsGCsu5rOMuXt/YwDu/83jcFYmIvGlZCwUzSwK3AGcBhwKXmNmhmdO4+7+4+5HufiRwM/DbbNWTFed+l/J0Ax8ZF9oVdA1nERnrsrmlcByw1N2Xu3sH4fKd5+9m+kuAO7NYz8g79AKonsnnSh/gjS1N/PLpVXFXJCLypmQzFKYBqzMer4nG7cLMZgKzgYezWM/IS6bgpE9RtfV5/qn4df73/S+zrbkj7qpERPZaNkNhoBPcBmuNvRj4jbt3DzgjsyvMbIGZLdi8efOIFTgijroUkgXcUvA9zJyv3v9y3BWJiOy1bIbCGmB6xuM6YN0g017MbnYdufut7j7P3efV1o6yXrsLSuCsb1DauY2bDl/Pb59by7u+/VjcVYmI7JVshsJ84EAzm21mhYQv/nv7T2RmBwHjgCezWEt2HfVhSJVw3tL/n9ICWLG1Rd1fiMiYlLVQcPcu4CrgL8ArwN3uvtjMrjOz8zImvQS4y93H7oH+yQJ4zw9JdLVw/ylraO9K860HX4u7KhGRPWZj7bt43rx5vmDBgrjL2JU7/OQMaNzAKS03sboJfv7x43nrgTVxVyYigpktdPd5Q02nM5pHihm8/VpoWMtDZV/mwInlfPZXz7OpoS3uykREhk2hMJJmvw0OPofC5g386NxatjW3c9o3H6WpXe0LIjI2KBRG2pk3ghn7zb+On3zkGFo6ujn5xod1trOIjAkKhZFWPR3KJsJrf+L0jseYXVPGjtZOrr7nRcZa+42I5B+FQjZ8+lmYfjw88AUe+cQBfPbtB3LPs2s48YaHFAwiMqopFLIhkYQLfgAdTXDL8Xzm1OlcfvIsNjS08x/3vaxutkVk1FIoZMuE/eGin0JHE3bfZ7nm3YcwubKIO55YwZW/WEhrx4A9eoiIxEqhkE2HnANVM+CFu7Cn/g9PfukMrjnnUP6yeCPzvvpXNjXqcFURGV0UCtn2mUVwyLnw4JexH5zEx946mx9/ZB6tnd289cZHWLKhMe4KRUR6KRSyLZGAC34Ikw+H7Sth3fO849BJ/OGf30p1aQFnf/fvvONb6kBPREYHhUIuFJXDB38N6S74ydth48scXlfFH646meKCBK9vauLY6//GjpbOuCsVkTynUMiVyilw5RNQVgM/OgV+dCpTqkp47pp3MqWqmM2N7Rzz1b9y+jcf1WGrIhIbhUIu1RwAl/0RLAkbX4J1z1GYSvDkl87gj59+K8UFSZZvaebwax/kmTe2xV2tiOQhhUKuTdgfrnomBMOPz4A1CwE4bGoVL/z7O/nGe+dSVpTkoh89yZH/8SCL1+2IuWARySfqOjsu9avhv84Jt7WHwP/3371PtXZ0819PruCmvyyhO+2ce8RUrjx1fw6dWhlfvSIypg2362yFQpwa1sHNx0BnC7zrBjjhytAFd2RHaye3Pr6MHzy6jLRDZXGKb77/CM44ZBLJxECXwBYRGZhCYaxob4TvHAGtW+GIS+Dd34LC0p0m2dHSyTk3/52NDe10dKcpSiX4tzMP5v3z6qgoLoipcBEZSxQKY0k6DY/fBI9+DVLF8JF7Ycbxu0zW1Z3mwZc38sXfvEBTexcJg/Flhdz0/iN46wE1FCTVRCQiA1MojEXLH4NfvB+62+GkT8E/fQUKigecdNHqen7x9ErueXYt3WknlTDeP6+Osw+fwgn7TVBAiMhOFApjVXsjPPgVWHgHpErgsvuhbvD3sb2rm3Nv/gdbmzrY3tJB2iGZMM6dO4V3HjaZU+fUUlaUyl39IjIqKRTGuqUPwZ0XQ3cHHHM5nHENlI7f7UtaO7o5//v/YHtLB9tbOulKOwaUF6WoKE5xw3vncszMcZQrJETyjkJhX9DWAI/eCE/dAokUnH0THPVhSA7duNzVnebcm/9BfWsnDW2dNLf3ddWdMJhYUcS/nXUwh0ypZP/acu1uEtnHKRT2JRtegtvPgvaG0BBdNQP++alwMZ9ham7v4rlV9fzbPYvYsKONNNDz1htQUpikozvNtKoSvvG+uRw8pZKqEh3ZJLKvUCjsa9zh9Qfh15dDZzMUlITeVw85L/TEuoe6utMs39LMlT9fSEtHN83tXTS2dZH5aShKJSgtTFJamOSacw/j0CmV1I0rwUznSIiMNQqFfVU6Da/cC498DbYsgcIyuPDHMOesvQqHTO7O5sZ2Fq9v4Jrfv0RzRzctHV20daZ3mq6iOEVpYZKSgiTXnncY08eXUjeuhKLU8LdcRCS3FAr7unQ3vPhruO8z0NUWjlR61/Vw5AfDVsQIaunoYsmGRj73q+dZU99KUSpJS0cX/S81XZA0ilNJWju7mVRZTFEqQXFBgtsuO46JFUUkdBa2SGwUCvmiuwt+cBI0rIWOptAgfcq/wtEfhappWVtsOu1sbmpn9bYWvvibF1hT30plcYr2zjRN7TvvhoLQe4cBFcUFFCYT7GjtYGp1CV9596FMripmYmURNWUKDpFsUSjkG3dY+QT86lJojbrdLhkH598CB74Lkrk9DLW9q5u121u58ucLae9K096VZnNjO0WpBB3daTq7d/3c9cRBaVGSwmSCpvYuJlUWU5hMUJhK8P0PHsWkymLKi1Jq1xDZQ6MiFMzsTOC7QBL4ibvfOMA0FwHXAg4scvcP7m6eCoVh2LYcnv0ZPHkzdHdC+WQ48hKYezFMPDju6oDQ0L25qZ2NDe184deLQlB0pdnU2E5pYZLObqe1s3vQ1xckjVQiQUdXN5UlBaQSYetjUmUxV51+ANWlhYwrLWRcaQHVpYVUlxbosFvJa7GHgpklgdeAdwBrgPnAJe7+csY0BwJ3A6e7+3Yzm+jum3Y3X4XCHujuhNf+AvdeBa3bw7jJc+Hw98HB54RrO4xyLR1dbGpo58qfL4y2MNJs2NFGVUkhXek0Da2dFKaSdKUH3vrIlDQjjVNakCSVNJrbuxlfVkgyYWxt7mBqVTGphJFMJPj6++ZSWZxifFkhlcUF2q0lY95oCIUTgWvd/V3R4y8BuPsNGdN8A3jN3X8y3PkqFPZS0yZ46R54+Kuh7QFg4mFwyDkhICYfvlO33WORu9PS0c32lg7qWzrZ3tLBf9y7mNXbW6kpL6IrnWZrUwdlRSm60mlaOrpJmtGd9l3aQPpLJYxud4pTSRIJeo/IqiopIGlQ39pJbXloE9nc2M7U6hKSBmvrW5k1oYwb3juXkoJwxFZJYTQUJNUFuuTMaAiF9wFnuvv/iB5/GDje3a/KmOb3hK2Jkwm7mK519z/vbr4KhRGwfSWD6/FwAAAS6UlEQVS8+kd49IZwQhxA9Uw45NwQENOP26MT48Y6d6etM01DWycN0RngO1o7uf6Pr7BmeysTygvp6na2NXdQUZwi7dDU1okDhakE6TR0dKcxGDJc+jMLzUGFyQSJBHR0pSkrTJFIGM3tXVSXFpAwY3tLB7UVRSTN2NTYzpSqYsyM9TtaqasO546s2d7CzAllJAxWbG1h/9oyvv2BI0kmEqQSRippJBNGQSJBMhluC5JGSrvV8sJoCIX3A+/qFwrHufunMqa5H+gELgLqgL8Db3H3+n7zugK4AmDGjBnHrFy5Mis156WmzbDkAfjbv/ftYiqrDQFx2Htg5sl5FRBvVkdXmpaOLpqjEwJbOrpp7ejm2ntfYuW2FqZWlZB2Z/2ONmrKi0i7s6WpnaqSAtIeLqxUWpgknQ5tKqlkgnTa6ep//G8WpBJGwoyudJrigiQGtHZ2U1aUwoDmjm4qilKYQWPbzoE1oayIhMGW5g4mVRRhZmxsaGNqdQkGrMsIr9XbW5gxvhQDVm0LQWbAim0tzJ5Q1nuk2k3vPyLUlDCSFgJtp8HCc6noccKsd3rZ1WgIheHsPvoh8JS73xE9fgi42t3nDzZfbSlkUVtDOGv6lfvCCXKehrKJMOedMPs0mH0KVEyOu8q85e69R3J1dKXp6A63nd1pPver51m+pZmZ40tJO6za1kzduFLcnTX1rUytKsHdWbejjcmVxTjOhoZ2JkbBtLmpnXGlhaTdqW/ppLw4hTs0tXdRWpjEPbTvFBeE+21d3RQkEjhOZ7eTMHY5byVuRtgS6+k52CB0M58ModHV7RSkEhhhS68omQALwV6USmIGbZ3dISAtdDjZPyAxaGrrorI4BWY0tHZSWVKAEQK+ujR0FbOjtZNxpYUAUYgWAsbW5nZqyoswYEtTO7UVxRiwqak9ClfY2NDO5MpisHD1xfs+dcrerY9REAopwq6hM4C1hIbmD7r74oxpziQ0Pn/UzGqA54Aj3X3rYPNVKORIRwu8/hdY/Ht49b5wshxAYTm87fMw620wZe6wOueT/NGd9p0Cq+e2O+2k3fnXu59n2eZmZteU4Q5vbG1m1vhSHFi5tZkZ0f1V21qY3i/UILTRAEypKsYdNjS0MamyCHfY2BhCzgln5k8oLwLCl+34skLcwxfyuNJwv761o7d/r/qWTqpKCnCgobWTiuJwCHdjWxflRSmcvoDEobmji5KCJE4IjsJU2AXX0ZXuvd/elaYwmcAdOrvTpJKGO3SlnWTCcHfSzh7tdpw1oZRHv/BPe/XexB4KURFnA98htBfc5u7Xm9l1wAJ3v9fCweb/CZwJdAPXu/tdu5unQiEG6W7Y8AIsfxQe/2ZfQ7Ulwu6lGSfCzBOh7lgoqoi1VJGxzN3pTjvd7qTT0B09TkehWlqYoqRw73bnjopQyAaFwijQuAFWPRUNT8D6RX3PTTkihMSME6DuuKyeVS0iw6dQkNxpb4Q186OQeBJW/CO0RwAki+Dgs2H68eGopsna5SQSh+GGgi7BJW9eUQXsf3oYIJw0t+EFWD0fVj8Nq5+Bxb8Lz1kCpp8QLjE67ZgwVNWN+XMkRPYVCgUZecmCvi/8Ez4Zxu1YC2ue6QuKJ26mt3ktUQAHnBGmn3JkaMDWUU4isVAoSG5UTYOq94RzHwC6OmDjS7B2Iax9Nty+lnHeYvmksKtpytzo9ggYN0tbFCJZplCQeKQKYdrRYejR1gAbXgy7ntYvgpf/AEv/2vd8UVXojmPKEX1hUTMn5z3AiuzL1NAso1tnG2xaDOtfiMLiBVj3bF9DtiVg6lEhICYdBrUHw8RDoKwm3rpFRhk1NMu+oaC4r32iR3cXbH09IygWwXM/7TvBDkI7xYwTQkD0BEXtwVA6Pvd/g8gYolCQsSeZCl/yEw+BIz4QxrlD43rY9DJsehU2vxJun/9l38l20BcWtQdD7UFhqDkIyieqvUIEhYLsK8ygcmoYDnh733h32LEGNr0SgmLza7D5VXjhV309xEK4jOm0eVA7JwRGTRQYOlxW8oxCQfZtZlA9PQxz3tk3vmfLYvOSMGyJbl99AJ79acbrE6Fhu/bg0KhdMwdqDgxHQqWKcv7niGSbQkHyU+aWxf79Ohhr3rJzUGxeAssfg0V37jzduFkw4UCYcEC4it2EA8JQOQ0SukaBjE0KBZH+ymrCMOvknce37YCtS2Hrsuh2KWx5HZY91Hc0FISti4mHZgRFRnCooVtGOYWCyHAVV+16JBREu6I2REHxel9obFwML9/LTh0jl4wLWxjVM8LV7qpnwLjZMGE/qJqhcy4kdvoEirxZZlA5JQyz+10ApbszXP60Z8ti27LweOPLsOTP0N3eN20iFUJi/H7RsH/f/eoZ4YQ/kSxTKIhkU7IAag4IQ3/pNDRvgm1vwLbl0bAs3C57BLx75+mrZ4ZdUOP3C1sX42ZC1fQQGCXjdJSUjAiFgkhcEonQ8V/F5HCRokzuocG7NywyAmPB7bsGRmFFtEsqc5jet5tKoSHDpFAQGY3MoLw2DDOO3/k5d2jdDvWr+oYdq/vur/gHdDTu/JrC8nDORVV0eG7PFkbP4/LJOmJKAIWCyNhjFo5iKh0PU4/c9Xl3aKuPQmL1rsGxdkEIlZ1nuvPuqKrpIUQqp0LFlLA1o62NvKBQENnXmIUv8JJx4cS7gbQ3RSGxGnZE4dHzeNnD4WiqXS4nb327pnrCo3erYzpU1qkxfB+gUBDJR0Xlff1HDaSrAxrWhnBoXA9NG8Ntw7oQHG88Fu7vFBwWtioyd09VTw+H2vaMKyzNxV8nb4JCQUR2lSqE8bPDMJie4Ohtz1jdd3/NfHjpHnbZ2iitCYfuVkwNu6Qqo9vMx6UTtJsqRgoFEdk7QwVHujtsXfSGxcpwv3EDNK4L18Vo3rzr65KFoeG7csqugZH5uKg8u39fnlIoiEh2JJLREU91wIkDT9PV0bdrqnE9NKzvu9+4Ppzkt/ThXY+mgnAYbsWkvobwiskZ96Pb8snaZbWHFAoiEp9UYV8vtrvT3hi2MBrW7drO0bgh7K6qX7VzH1Q9iqv6hUU0VEa35ZPCoEZyQKEgImNBUUUYag4cfJqeQ3F7QiPztmFdCJE3/g5NGyDdtevrSyeELYuKSX23vQEytS9A9vH+qfbtv05E8kfmobiDHVUFoXuRli19u6uaNkDjxr7bnutsNG3cNTwsAWUT+xrLM9s9MscVVY7ZxnKFgojkl0QiXH61fOLg53FAFB5bQ6N4w/pdb7e/ASv/O2yd7MJCg/nkt0S7pyaG27Lavt1VPeNGWZuHQkFEZCCJRF9XI7sLj87WXRvJmzZFw8bQK+6a+aEvq11OCCQ0mPcExIC3GYGSLMjan9tDoSAi8mYUlPR1cb473V1ht1XTxp1DI/N242J45b5dOzzs8e5vwbEfH/m/IUNWQ8HMzgS+CySBn7j7jf2evwy4CVgbjfq+u/8kmzWJiMQimeo7dHYonW2hW/XewIhCY+pRWS8za6FgZkngFuAdwBpgvpnd6+4v95v0V+5+VbbqEBEZcwqK+/qZyrFs9pV7HLDU3Ze7ewdwF3B+FpcnIiJvUjZDYRqwOuPxmmhcf+81sxfM7DdmNuAZLGZ2hZktMLMFmzcPcFq8iIiMiGyGwkAH6fZver8PmOXuc4G/Af810Izc/VZ3n+fu82pra0e4TBER6ZHNUFgDZP7yrwPWZU7g7lvdvefK5T8GjsliPSIiMoRshsJ84EAzm21mhcDFwL2ZE5jZlIyH5wGvZLEeEREZQtaOPnL3LjO7CvgL4ZDU29x9sZldByxw93uBT5vZeUAXsA24LFv1iIjI0Mx9gDPsRrF58+b5ggUL4i5DRGRMMbOF7j5vqOmyuftIRETGmDG3pWBmm4GVe/nyGmDLCJYzUkZjXappeEZjTTA661JNw5eNuma6+5CHb465UHgzzGzBcDafcm001qWahmc01gSjsy7VNHxx1qXdRyIi0kuhICIivfItFG6Nu4BBjMa6VNPwjMaaYHTWpZqGL7a68qpNQUREdi/fthRERGQ3FAoiItIrb0LBzM40syVmttTMro6phulm9oiZvWJmi83sM9H4a81srZk9Hw1n57iuFWb2YrTsBdG48Wb2VzN7Pbodl+OaDspYH8+bWYOZfTbX68rMbjOzTWb2Usa4AdeNBd+LPmMvmNnROazpJjN7NVru78ysOho/y8xaM9bXD7NR027qGvT9MrMvRetqiZm9K4c1/SqjnhVm9nw0PifrajffA7F+rnq5+z4/EPpeWgbsBxQCi4BDY6hjCnB0dL8CeA04FLgW+HyM62cFUNNv3DeAq6P7VwNfj/n92wDMzPW6At4GHA28NNS6Ac4G/kToNv4E4Okc1vROIBXd/3pGTbMyp4thXQ34fkWf+0VAETA7+v9M5qKmfs//J3BNLtfVbr4HYv1c9Qz5sqUwKq4C5+7r3f3Z6H4joVfYgS48NBqcT9/1Lf4LuCDGWs4Alrn73p7Jvtfc/XFCZ42ZBls35wM/9eApoLpfT8BZq8ndH3T3rujhU4Su6nNqkHU1mPOBu9y93d3fAJYS/k9zVpOZGXARcOdIL3eImgb7Hoj1c9UjX0JhuFeByxkzmwUcBTwdjboq2jS8Lde7aggXP3rQzBaa2RXRuEnuvh7ChxiYmOOaMl3Mzv+4ca4rGHzdjJbP2ccIvyx7zDaz58zsMTM7JYZ6Bnq/RsO6OgXY6O6vZ4zL6brq9z0wKj5X+RIKw7kKXM6YWTlwD/BZd28AfgDsDxwJrCds0ubSye5+NHAW8M9m9rYcL39QFq7FcR7w62hU3Otqd2L/nJnZlwld0f8iGrUemOHuRwGfA35pZpU5LGmw9yv2dQVcws4/NnK6rgb4Hhh00gHGZW1d5UsoDHkVuFwxswLCB+EX7v5bAHff6O7d7p4mXIFuxDejd8fd10W3m4DfRcvf2LOJGt1uymVNGc4CnnX3jVGNsa6ryGDrJtbPmZl9FDgH+JBHO6Oj3TNbo/sLCfvu5+Sqpt28X3GvqxRwIfCrjFpztq4G+h5glHyu8iUUhrwKXC5E+zD/L/CKu38rY3zm/sH3AC/1f20Wayozs4qe+4QGy5cI6+ej0WQfBf6Qq5r62enXXJzrKsNg6+Ze4CPR0SInADt6dgdkm5mdCfwbcJ67t2SMrzWzZHR/P+BAYHkuaoqWOdj7dS9wsZkVmdnsqK5nclUX8HbgVXdf0zMiV+tqsO8BRsvnKtst7aNlILTgv0ZI/y/HVMNbCZt9LwDPR8PZwM+AF6Px9wJTcljTfoSjQBYBi3vWDTABeAh4PbodH8P6KgW2AlUZ43K6rgiBtB7oJPxi+/hg64awmX9L9Bl7EZiXw5qWEvY793yufhhN+97ofV0EPAucm+N1Nej7BXw5WldLgLNyVVM0/g7gk/2mzcm62s33QKyfq55B3VyIiEivfNl9JCIiw6BQEBGRXgoFERHppVAQEZFeCgUREemlUBARkV4KBZFhMLMj+3X7fJ6NUBfsFroELx2JeYm8WTpPQWQYzOwywklDV2Vh3iuieW/Zg9ck3b17pGsR0ZaC7FOiC6W8YmY/ji5g8qCZlQwy7f5m9ueod9i/m9nB0fj3m9lLZrbIzB6Puka5DvhAdPGVD5jZZWb2/Wj6O8zsB9GFU5ab2alRj6CvmNkdGcv7gZktiOr6j2jcp4GpwCNm9kg07hILFz16ycy+nvH6JjO7zsyeBk40sxvN7OWoB9JvZmeNSt7J5unSGjTkeiBcKKULODJ6fDdw6SDTPgQcGN0/Hng4uv8iMC26Xx3dXgZ8P+O1vY8JXSbcReiO4HygATic8KNrYUYtPd0WJIFHgbnR4xVEFzkiBMQqoBZIAQ8DF0TPOXBRz7wI3UNYZp0aNLzZQVsKsi96w92fj+4vJATFTqJui08Cfm3hcow/IlwRC+C/gTvM7BOEL/DhuM/dnRAoG939RQ89gy7OWP5FZvYs8BxwGOFqW/0dCzzq7ps9XDTnF4SrhwF0E3rWhBA8bcBPzOxCoGWXOYnshVTcBYhkQXvG/W5goN1HCaDe3Y/s/4S7f9LMjgfeDTxvZrtMs5tlpvstPw2kop5APw8c6+7bo91KxQPMZ6C+83u0edSO4O5dZnYc4ap0FwNXAacPo06R3dKWguQlDxc1ecPM3g+9F0c/Irq/v7s/7e7XAFsIfdk3Eq6nu7cqgWZgh5lNIlwnokfmvJ8GTjWzmqgb50uAx/rPLNrSqXL3B4DPEi5iI/KmaUtB8tmHgB+Y2VeAAkK7wCLgJjM7kPCr/aFo3Crg6mhX0w17uiB3X2RmzxF2Jy0n7KLqcSvwJzNb7+7/ZGZfAh6Jlv+Auw90LYsK4A9mVhxN9y97WpPIQHRIqoiI9NLuIxER6aXdR7LPM7NbgJP7jf6uu98eRz0io5l2H4mISC/tPhIRkV4KBRER6aVQEBGRXgoFERHp9f8A2eD/fPvUqbgAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x267e4a3d5c0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "cvresult = pd.DataFrame.from_csv('1_nestimators.csv')\n",
    "        \n",
    "# plot\n",
    "test_means = cvresult['test-mlogloss-mean']\n",
    "test_stds = cvresult['test-mlogloss-std'] \n",
    "        \n",
    "train_means = cvresult['train-mlogloss-mean']\n",
    "train_stds = cvresult['train-mlogloss-std'] \n",
    "\n",
    "x_axis = range(0, cvresult.shape[0])\n",
    "        \n",
    "pyplot.errorbar(x_axis, test_means, yerr=test_stds ,label='Test')\n",
    "pyplot.errorbar(x_axis, train_means, yerr=train_stds ,label='Train')\n",
    "pyplot.title(\"XGBoost n_estimators vs Log Loss\")\n",
    "pyplot.xlabel( 'n_estimators' )\n",
    "pyplot.ylabel( 'Log Loss' )\n",
    "pyplot.savefig( 'n_estimators4_1.png' )\n",
    "\n",
    "pyplot.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Anaconda\\lib\\site-packages\\ipykernel_launcher.py:1: FutureWarning: from_csv is deprecated. Please use read_csv(...) instead. Note that some of the default arguments are different, so please refer to the documentation for from_csv when changing your function calls\n",
      "  \"\"\"Entry point for launching an IPython kernel.\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x267e4a3dda0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "cvresult = pd.DataFrame.from_csv('1_nestimators.csv')\n",
    "\n",
    "cvresult = cvresult.iloc[100:]\n",
    "# plot\n",
    "test_means = cvresult['test-mlogloss-mean']\n",
    "test_stds = cvresult['test-mlogloss-std'] \n",
    "        \n",
    "train_means = cvresult['train-mlogloss-mean']\n",
    "train_stds = cvresult['train-mlogloss-std'] \n",
    "\n",
    "x_axis = range(100,cvresult.shape[0]+100)\n",
    "        \n",
    "fig = pyplot.figure(figsize=(10, 10), dpi=100)\n",
    "pyplot.errorbar(x_axis, test_means, yerr=test_stds ,label='Test')\n",
    "pyplot.errorbar(x_axis, train_means, yerr=train_stds ,label='Train')\n",
    "pyplot.title(\"XGBoost n_estimators vs Log Loss\")\n",
    "pyplot.xlabel( 'n_estimators' )\n",
    "pyplot.ylabel( 'Log Loss' )\n",
    "pyplot.savefig( 'n_estimators_detail.png' )\n",
    "\n",
    "pyplot.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "#n_estimators约为205"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "#调整树的参数：max_depth & min_child_weight\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'max_depth': range(3, 10, 2), 'min_child_weight': range(1, 6, 2)}"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#max_depth 建议3-10， min_child_weight=1／sqrt(ratio_rare_event) =5.5\n",
    "max_depth = range(3,10,2)\n",
    "min_child_weight = range(1,6,2)\n",
    "param_test2_1 = dict(max_depth=max_depth, min_child_weight=min_child_weight)\n",
    "param_test2_1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Anaconda\\lib\\site-packages\\sklearn\\model_selection\\_search.py:761: DeprecationWarning: The grid_scores_ attribute was deprecated in version 0.18 in favor of the more elaborate cv_results_ attribute. The grid_scores_ attribute will not be available from 0.20\n",
      "  DeprecationWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "([mean: -0.60306, std: 0.00315, params: {'max_depth': 3, 'min_child_weight': 1},\n",
       "  mean: -0.60257, std: 0.00309, params: {'max_depth': 3, 'min_child_weight': 3},\n",
       "  mean: -0.60262, std: 0.00292, params: {'max_depth': 3, 'min_child_weight': 5},\n",
       "  mean: -0.59063, std: 0.00362, params: {'max_depth': 5, 'min_child_weight': 1},\n",
       "  mean: -0.59046, std: 0.00375, params: {'max_depth': 5, 'min_child_weight': 3},\n",
       "  mean: -0.59031, std: 0.00326, params: {'max_depth': 5, 'min_child_weight': 5},\n",
       "  mean: -0.58983, std: 0.00403, params: {'max_depth': 7, 'min_child_weight': 1},\n",
       "  mean: -0.58861, std: 0.00368, params: {'max_depth': 7, 'min_child_weight': 3},\n",
       "  mean: -0.58825, std: 0.00355, params: {'max_depth': 7, 'min_child_weight': 5},\n",
       "  mean: -0.59992, std: 0.00529, params: {'max_depth': 9, 'min_child_weight': 1},\n",
       "  mean: -0.59577, std: 0.00409, params: {'max_depth': 9, 'min_child_weight': 3},\n",
       "  mean: -0.59398, std: 0.00390, params: {'max_depth': 9, 'min_child_weight': 5}],\n",
       " {'max_depth': 7, 'min_child_weight': 5},\n",
       " -0.5882463668987373)"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "xgb2_1 = XGBClassifier(\n",
    "        learning_rate =0.1,\n",
    "        n_estimators=205,  #第一轮参数调整得到的n_estimators最优值\n",
    "        max_depth=5,\n",
    "        min_child_weight=1,\n",
    "        gamma=0,\n",
    "        subsample=0.3,\n",
    "        colsample_bytree=0.8,\n",
    "        colsample_bylevel = 0.7,\n",
    "        objective= 'multi:softprob',\n",
    "        seed=3)\n",
    "\n",
    "\n",
    "gsearch2_1 = GridSearchCV(xgb2_1, param_grid = param_test2_1, scoring='neg_log_loss',n_jobs=-1, cv=kfold)\n",
    "gsearch2_1.fit(X_train , y_train)\n",
    "\n",
    "gsearch2_1.grid_scores_, gsearch2_1.best_params_,     gsearch2_1.best_score_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('mean_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split0_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split1_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split2_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split3_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split4_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('std_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "{'mean_fit_time': array([104.50415373, 106.54387026, 109.86013708, 177.15022907,\n",
       "        178.56439071, 172.12005281, 247.29863787, 278.43616467,\n",
       "        362.18085303, 553.89064941, 448.44056306, 362.95737414]),\n",
       " 'mean_score_time': array([0.37529817, 0.3732935 , 0.38021159, 0.56019025, 0.55617995,\n",
       "        0.52279053, 1.56636667, 1.12870269, 1.19267235, 5.9088181 ,\n",
       "        2.869133  , 0.89698405]),\n",
       " 'mean_test_score': array([-0.60305717, -0.60256924, -0.60261954, -0.59062754, -0.59046148,\n",
       "        -0.59031279, -0.58982764, -0.58861361, -0.58824637, -0.59992465,\n",
       "        -0.59577036, -0.59397767]),\n",
       " 'mean_train_score': array([-0.58227088, -0.58281358, -0.58311422, -0.51917806, -0.52359257,\n",
       "        -0.52713352, -0.42124126, -0.44004636, -0.45252716, -0.30280298,\n",
       "        -0.34638593, -0.37226852]),\n",
       " 'param_max_depth': masked_array(data=[3, 3, 3, 5, 5, 5, 7, 7, 7, 9, 9, 9],\n",
       "              mask=[False, False, False, False, False, False, False, False,\n",
       "                    False, False, False, False],\n",
       "        fill_value='?',\n",
       "             dtype=object),\n",
       " 'param_min_child_weight': masked_array(data=[1, 3, 5, 1, 3, 5, 1, 3, 5, 1, 3, 5],\n",
       "              mask=[False, False, False, False, False, False, False, False,\n",
       "                    False, False, False, False],\n",
       "        fill_value='?',\n",
       "             dtype=object),\n",
       " 'params': [{'max_depth': 3, 'min_child_weight': 1},\n",
       "  {'max_depth': 3, 'min_child_weight': 3},\n",
       "  {'max_depth': 3, 'min_child_weight': 5},\n",
       "  {'max_depth': 5, 'min_child_weight': 1},\n",
       "  {'max_depth': 5, 'min_child_weight': 3},\n",
       "  {'max_depth': 5, 'min_child_weight': 5},\n",
       "  {'max_depth': 7, 'min_child_weight': 1},\n",
       "  {'max_depth': 7, 'min_child_weight': 3},\n",
       "  {'max_depth': 7, 'min_child_weight': 5},\n",
       "  {'max_depth': 9, 'min_child_weight': 1},\n",
       "  {'max_depth': 9, 'min_child_weight': 3},\n",
       "  {'max_depth': 9, 'min_child_weight': 5}],\n",
       " 'rank_test_score': array([12, 10, 11,  6,  5,  4,  3,  2,  1,  9,  8,  7]),\n",
       " 'split0_test_score': array([-0.59796634, -0.59735182, -0.59802364, -0.58435515, -0.58414693,\n",
       "        -0.58521771, -0.58304743, -0.58186511, -0.58259428, -0.59028787,\n",
       "        -0.59025027, -0.5891077 ]),\n",
       " 'split0_train_score': array([-0.58392128, -0.5847999 , -0.58469243, -0.52120528, -0.5252434 ,\n",
       "        -0.52826068, -0.42274696, -0.44192794, -0.45357563, -0.3024851 ,\n",
       "        -0.34633049, -0.37199063]),\n",
       " 'split1_test_score': array([-0.60189921, -0.60116794, -0.6008299 , -0.58962101, -0.58899253,\n",
       "        -0.58876812, -0.58932691, -0.5877605 , -0.58644331, -0.60008753,\n",
       "        -0.59169966, -0.59165405]),\n",
       " 'split1_train_score': array([-0.58267915, -0.58317339, -0.58369763, -0.52002748, -0.52442797,\n",
       "        -0.5284857 , -0.4216518 , -0.44021229, -0.45235475, -0.30453995,\n",
       "        -0.34846117, -0.37322906]),\n",
       " 'split2_test_score': array([-0.60302663, -0.60357804, -0.60313591, -0.59161157, -0.59073243,\n",
       "        -0.59037885, -0.58957509, -0.58995851, -0.58857928, -0.60022073,\n",
       "        -0.59697469, -0.59400231]),\n",
       " 'split2_train_score': array([-0.58231029, -0.58269783, -0.58292475, -0.51821377, -0.52333749,\n",
       "        -0.5263707 , -0.41995657, -0.43908089, -0.45267785, -0.30176095,\n",
       "        -0.34558714, -0.37347075]),\n",
       " 'split3_test_score': array([-0.60735523, -0.60629009, -0.60622859, -0.59228288, -0.5943997 ,\n",
       "        -0.59237284, -0.59179334, -0.59171105, -0.59069343, -0.60293907,\n",
       "        -0.60016232, -0.59430717]),\n",
       " 'split3_train_score': array([-0.58111404, -0.5815727 , -0.58196322, -0.51929642, -0.523149  ,\n",
       "        -0.52643891, -0.41861384, -0.43875507, -0.45061618, -0.30197707,\n",
       "        -0.34473954, -0.37005889]),\n",
       " 'split4_test_score': array([-0.60503905, -0.6044589 , -0.60488037, -0.59526851, -0.59403692,\n",
       "        -0.59482779, -0.59539712, -0.59177386, -0.59292295, -0.60608994,\n",
       "        -0.59976607, -0.6008192 ]),\n",
       " 'split4_train_score': array([-0.58132963, -0.58182405, -0.58229307, -0.51714736, -0.52180498,\n",
       "        -0.52611162, -0.42323715, -0.44025562, -0.45341141, -0.30325183,\n",
       "        -0.34681131, -0.37259327]),\n",
       " 'std_fit_time': array([ 2.07812528,  4.37165203,  1.41602347,  3.2433958 ,  3.39907437,\n",
       "         0.98076829,  3.79919397, 18.30240466, 61.47468973, 92.6948856 ,\n",
       "        16.89692333, 47.1751149 ]),\n",
       " 'std_score_time': array([0.02634693, 0.03007641, 0.02462294, 0.03129301, 0.02855698,\n",
       "        0.0116126 , 0.56698149, 0.08009945, 0.22852028, 1.19605309,\n",
       "        1.18031392, 0.14398909]),\n",
       " 'std_test_score': array([0.00315155, 0.00308611, 0.00292333, 0.00362217, 0.00375229,\n",
       "        0.00325504, 0.004029  , 0.00367862, 0.00355426, 0.00529294,\n",
       "        0.00409262, 0.00389928]),\n",
       " 'std_train_score': array([0.00101156, 0.00114955, 0.00098652, 0.00140703, 0.00117307,\n",
       "        0.00102054, 0.00173049, 0.00111456, 0.00105693, 0.00100872,\n",
       "        0.00125214, 0.00121927])}"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "gsearch2_1.cv_results_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "#参数调优max_depth为[3,5,7,9],min_child_weight为[1,3,5]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Best: -0.588246 using {'max_depth': 7, 'min_child_weight': 5}\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('mean_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('std_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split0_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split1_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split2_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split3_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split4_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n"
     ]
    },
    {
     "data": {
      "image/png": "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4447eP755wF49tlnuf7666moqOD3v/89Z599dpPPFxEyMjIAZ0h3XV2d9YcY08Ws4TpB7r77bkaOHElJSQlTpkxhw4YNLF++nJKSElauXMmyZctYtGgRgwcPZvXq1axdu5Zp06Zxww03MHjwYJYuXdpiEAE4cOAA5513HitXriQzM5Mf//jHLFmyhBdeeIGf/vSnAPTv358lS5awatUqnnnmGW644QYAZs2axcCBA1mwYAHXXHMNt99+e8QgAvDQQw+Rnp7OmjVr+NGPfsTKlSsB2L17N3fccQevvfYaq1atouC003jgscdIyc1FfD56DRzI288/zzcvvZQbvvlNCoYM4aJp0/jFPfdQUlLCyJEjAaivr2f58uXMnz+f22+/HYBt27bxxS9+sbEMgUCACRMm0L9/f6ZMmcLpp0caZW6MiRerkUCrNYeusHjxYhYvXszJJ58MQHV1NRs2bODss8/mpptu4uabb2bGjBnN/jXemuTkZKZNmwbAuHHjSElJwefzMW7cOLZs2QI4/4KfO3cuJSUleL1ePg6ZDuXBBx9k7NixTJo0idmzZ7f4OcuWLWsMQPn5+eTn5wPw7rvvsm7dOs466ywA/H4/Z5xxRmO+r159NSl5eXztf/6Hm3/1K4IHDxI8cIC6rdvwb92Kt1cvAC6++GIATj311MZyDx48mIULFzaey+v1UlJSQkVFBbNmzWLt2rWMHTs26ntljImNBZJuQFW59dZb+eY3v9ns2MqVK1m4cCG33norF1xwQWNtoi0+n6+xicfj8ZCSktL4vt4dmnvfffcxYMAAVq9eTTAYJDU1tTH/1q1b8Xg87Ny5k2AwiKeVUVeRmpJUlSlTpvDUU0+1mseTmop4PKSccAKejAw86WnO6K99+wjW1OCtriZYW4vX620sd0t69erFeeedx6JFiyyQGNOFrGkrQTIzM9m/fz8AU6dO5bHHHqO6uhpwvsR37drFtm3bSE9PZ86cOdx0002sWrWqWd5YVFZWMmjQIDweD0888QSBQABwmpOuuuoqnnzySUaPHs2990Z85hOAc845h7/85S8ArF27ljVr1gAwadIk3nnnHTZu3AhATU1NkxrPM8880/jzjDPOQETo2acPB5OTST3hBHw5OeDxUF9RQe2GDdRu3gzBYLPnU8rLy6moqACc/prXXnuNE088MeZ7Y4yJntVIEqRv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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x26785338a20>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# summarize results\n",
    "print(\"Best: %f using %s\" % (gsearch2_1.best_score_, gsearch2_1.best_params_))\n",
    "test_means = gsearch2_1.cv_results_[ 'mean_test_score' ]\n",
    "test_stds = gsearch2_1.cv_results_[ 'std_test_score' ]\n",
    "train_means = gsearch2_1.cv_results_[ 'mean_train_score' ]\n",
    "train_stds = gsearch2_1.cv_results_[ 'std_train_score' ]\n",
    "\n",
    "pd.DataFrame(gsearch2_1.cv_results_).to_csv('my_preds_maxdepth_min_child_weights_1.csv')\n",
    "\n",
    "# plot results\n",
    "test_scores = np.array(test_means).reshape(len(max_depth), len(min_child_weight))\n",
    "train_scores = np.array(train_means).reshape(len(max_depth), len(min_child_weight))\n",
    "\n",
    "for i, value in enumerate(max_depth):\n",
    "    pyplot.plot(min_child_weight, -test_scores[i], label= 'test_max_depth:'   + str(value))\n",
    "#for i, value in enumerate(min_child_weight):\n",
    "#    pyplot.plot(max_depth, train_scores[i], label= 'train_min_child_weight:'   + str(value))\n",
    "    \n",
    "pyplot.legend()\n",
    "pyplot.xlabel( 'max_depth' )                                                                                                      \n",
    "pyplot.ylabel( 'Log Loss' )\n",
    "pyplot.savefig('max_depth_vs_min_child_weght_1.png' )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [],
   "source": [
    "#max_depth': 7, 'min_child_weight': 5"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "#继续根据所得出的depth和最小权重和来调优参数\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'max_depth': [6, 7, 8], 'min_child_weight': [4, 5, 6]}"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#max_depth 建议3-10， min_child_weight=1／sqrt(ratio_rare_event) =5.5\n",
    "max_depth = [6,7,8]\n",
    "min_child_weight = [4,5,6]\n",
    "param_test2_2 = dict(max_depth=max_depth, min_child_weight=min_child_weight)\n",
    "param_test2_2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Anaconda\\lib\\site-packages\\sklearn\\model_selection\\_search.py:761: DeprecationWarning: The grid_scores_ attribute was deprecated in version 0.18 in favor of the more elaborate cv_results_ attribute. The grid_scores_ attribute will not be available from 0.20\n",
      "  DeprecationWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "([mean: -0.58922, std: 0.00388, params: {'max_depth': 6, 'min_child_weight': 4},\n",
       "  mean: -0.58874, std: 0.00361, params: {'max_depth': 6, 'min_child_weight': 5},\n",
       "  mean: -0.58835, std: 0.00380, params: {'max_depth': 6, 'min_child_weight': 6},\n",
       "  mean: -0.58772, std: 0.00407, params: {'max_depth': 7, 'min_child_weight': 4},\n",
       "  mean: -0.58825, std: 0.00355, params: {'max_depth': 7, 'min_child_weight': 5},\n",
       "  mean: -0.58817, std: 0.00367, params: {'max_depth': 7, 'min_child_weight': 6},\n",
       "  mean: -0.59144, std: 0.00438, params: {'max_depth': 8, 'min_child_weight': 4},\n",
       "  mean: -0.59261, std: 0.00370, params: {'max_depth': 8, 'min_child_weight': 5},\n",
       "  mean: -0.59095, std: 0.00373, params: {'max_depth': 8, 'min_child_weight': 6}],\n",
       " {'max_depth': 7, 'min_child_weight': 4},\n",
       " -0.5877153367670395)"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "xgb2_2 = XGBClassifier(\n",
    "        learning_rate =0.1,\n",
    "        n_estimators=205,  #第一轮参数调整得到的n_estimators最优值\n",
    "        max_depth=5,\n",
    "        min_child_weight=1,\n",
    "        gamma=0,\n",
    "        subsample=0.3,\n",
    "        colsample_bytree=0.8,\n",
    "        colsample_bylevel = 0.7,\n",
    "        objective= 'multi:softprob',\n",
    "        seed=3)\n",
    "\n",
    "\n",
    "gsearch2_2 = GridSearchCV(xgb2_2, param_grid = param_test2_2, scoring='neg_log_loss',n_jobs=-1, cv=kfold)\n",
    "gsearch2_2.fit(X_train , y_train)\n",
    "\n",
    "gsearch2_2.grid_scores_, gsearch2_2.best_params_,     gsearch2_2.best_score_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('mean_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split0_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split1_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split2_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split3_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split4_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('std_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "{'mean_fit_time': array([253.38175101, 288.47636442, 283.76322565, 307.98335252,\n",
       "        356.12942524, 290.93430929, 398.95825896, 349.24002514,\n",
       "        308.24650602]),\n",
       " 'mean_score_time': array([0.73104439, 0.80153284, 0.81807623, 0.87171869, 0.93147783,\n",
       "        0.84594975, 1.49237013, 1.42970343, 0.71601434]),\n",
       " 'mean_test_score': array([-0.58922119, -0.5887397 , -0.58835405, -0.58771534, -0.58824637,\n",
       "        -0.58816706, -0.59144398, -0.59261031, -0.59095233]),\n",
       " 'mean_train_score': array([-0.48751206, -0.49052692, -0.49328564, -0.44740438, -0.45252716,\n",
       "        -0.45663631, -0.40367996, -0.4118917 , -0.4183711 ]),\n",
       " 'param_max_depth': masked_array(data=[6, 6, 6, 7, 7, 7, 8, 8, 8],\n",
       "              mask=[False, False, False, False, False, False, False, False,\n",
       "                    False],\n",
       "        fill_value='?',\n",
       "             dtype=object),\n",
       " 'param_min_child_weight': masked_array(data=[4, 5, 6, 4, 5, 6, 4, 5, 6],\n",
       "              mask=[False, False, False, False, False, False, False, False,\n",
       "                    False],\n",
       "        fill_value='?',\n",
       "             dtype=object),\n",
       " 'params': [{'max_depth': 6, 'min_child_weight': 4},\n",
       "  {'max_depth': 6, 'min_child_weight': 5},\n",
       "  {'max_depth': 6, 'min_child_weight': 6},\n",
       "  {'max_depth': 7, 'min_child_weight': 4},\n",
       "  {'max_depth': 7, 'min_child_weight': 5},\n",
       "  {'max_depth': 7, 'min_child_weight': 6},\n",
       "  {'max_depth': 8, 'min_child_weight': 4},\n",
       "  {'max_depth': 8, 'min_child_weight': 5},\n",
       "  {'max_depth': 8, 'min_child_weight': 6}],\n",
       " 'rank_test_score': array([6, 5, 4, 1, 3, 2, 8, 9, 7]),\n",
       " 'split0_test_score': array([-0.58266236, -0.58256248, -0.58195716, -0.58027512, -0.58259428,\n",
       "        -0.58185384, -0.58432195, -0.58631739, -0.58527654]),\n",
       " 'split0_train_score': array([-0.48840988, -0.49137696, -0.49485115, -0.44776375, -0.45357563,\n",
       "        -0.45875659, -0.40420016, -0.41179842, -0.41842778]),\n",
       " 'split1_test_score': array([-0.58806084, -0.58766942, -0.58721089, -0.58715149, -0.58644331,\n",
       "        -0.58707817, -0.58954289, -0.59215979, -0.59001652]),\n",
       " 'split1_train_score': array([-0.48723842, -0.48992315, -0.49209035, -0.44713299, -0.45235475,\n",
       "        -0.45767021, -0.40329884, -0.41148667, -0.41785876]),\n",
       " 'split2_test_score': array([-0.58942901, -0.58964521, -0.58934307, -0.58898455, -0.58857928,\n",
       "        -0.58919816, -0.59247783, -0.59218846, -0.59155877]),\n",
       " 'split2_train_score': array([-0.48810173, -0.49068557, -0.4939093 , -0.44688043, -0.45267785,\n",
       "        -0.45542742, -0.40529829, -0.41368762, -0.42125648]),\n",
       " 'split3_test_score': array([-0.59185847, -0.59034697, -0.58968982, -0.58986939, -0.59069343,\n",
       "        -0.58979013, -0.59336067, -0.5950235 , -0.59095158]),\n",
       " 'split3_train_score': array([-0.48583965, -0.48929487, -0.49141197, -0.44603799, -0.45061618,\n",
       "        -0.45372016, -0.40231993, -0.4112883 , -0.41622946]),\n",
       " 'split4_test_score': array([-0.59409677, -0.59347583, -0.5935709 , -0.59229753, -0.59292295,\n",
       "        -0.59291642, -0.59751843, -0.59736385, -0.59696009]),\n",
       " 'split4_train_score': array([-0.48797063, -0.49135404, -0.49416541, -0.44920673, -0.45341141,\n",
       "        -0.45760719, -0.40328256, -0.41119752, -0.41808303]),\n",
       " 'std_fit_time': array([ 3.74132728, 29.04246041, 34.89075027,  7.56060632, 37.85392244,\n",
       "         8.85272408, 42.54907698, 40.72541579, 39.4555671 ]),\n",
       " 'std_score_time': array([0.03492294, 0.10838878, 0.18015238, 0.04159617, 0.15832729,\n",
       "        0.02265383, 0.40505841, 0.30103514, 0.08215138]),\n",
       " 'std_test_score': array([0.00387638, 0.00360929, 0.00380003, 0.00407236, 0.00355426,\n",
       "        0.00366861, 0.00438118, 0.00369861, 0.00372947]),\n",
       " 'std_train_score': array([0.00092042, 0.00081417, 0.00130791, 0.00105762, 0.00105693,\n",
       "        0.00181508, 0.00100424, 0.00092131, 0.00162854])}"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "gsearch2_2.cv_results_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Best: -0.587715 using {'max_depth': 7, 'min_child_weight': 4}\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('mean_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('std_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split0_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split1_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split2_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split3_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split4_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n"
     ]
    },
    {
     "data": {
      "image/png": "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zozpoxoaGigvL6euri7coZh+Lj4+nuzsbGJiujcHVkCJRkTSgBxVfa9bz2aM6TXl5eUkJyczevRom7fIBI2qcvToUcrLyxkzZky3jtFp05mIrBORFBFJB7YAj4vIT7r1bMaYXlNXV0dGRoYlGRNUIkJGRkaPzpy70keTqqrVwOeAx1V1KmC18Y2JAJZkTCj09HPWlUQzSERGAjcAq3r0bMYYYwacriSa/wD+AexS1X+JyFhgZ3DDMsZEumPHjvHzn/+8W/s+/PDD1NbW9jiGjRs3ctttt/X4OB6LFy/m+eefb7N8//79LFiwAIB169Zx1VVX+d1/9OjRHDlypNfi8ViyZAnbtm3rcJv2Yt+7dy9/+MMfOty3qamJyZMnt/u6eqrTRKOqz6nqRFX9hvt4j6p+PijRGGP6jEhINAUFBTz66KM9Pk5nsrKy/H6Jh8qvf/1r8vPzu7VvVxLNI488Ql5eXreO3xWdjjoTkYeAHwCngJeAC4HbVXVl0KIyxgTkgb99wLb91b16zPysFO777Pntrl+6dCm7d+9m0qRJXHrppWRmZvLss89SX1/PddddxwMPPMDJkye54YYbKC8vp6mpiX//93+noqKC/fv3U1hYyNChQykpKfF7/KSkJL75zW/y8ssvk5aWxg9/+EO+/e1vU1paysMPP8zVV1/NunXrWL58OatWreL++++ntLSUPXv2UFpayu23397h2c7vfvc7li9fjogwceJEVqxYAcD69ev5yU9+wsGDB3nooYdYsGABe/fu5aqrruL9999vdYyjR49y0003cfjwYaZNm4aqtvt8Dz30EPHx8dx2223ccccdbNmyheLiYl555RUef/xxVq5cyZo1a7jvvvuor69n3LhxPP744yQlJTF37lyWL19OQUEBv/nNb/jxj39MVlYW55xzDnFxcfz3f/93u7EvXbqU7du3M2nSJL70pS9xxx13tIqrvLycv//979x777385CfBGefVlaaz+e5ggKuAcuBc4K6gRGOM6TOWLVvGuHHj2Lx5M5deeik7d+7k7bffZvPmzWzatIn169fz0ksvkZWVxZYtW3j//fe57LLLuO2228jKyqKkpKTdJANw8uRJ5s6dy6ZNm0hOTua73/0ua9eu5c9//jPf+973/O6zY8cO/vGPf/D222/zwAMP0NDQ4He7Dz74gAcffJDi4mK2bNnC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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x267855ef9e8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# summarize results\n",
    "print(\"Best: %f using %s\" % (gsearch2_2.best_score_, gsearch2_2.best_params_))\n",
    "test_means = gsearch2_2.cv_results_[ 'mean_test_score' ]\n",
    "test_stds = gsearch2_2.cv_results_[ 'std_test_score' ]\n",
    "train_means = gsearch2_2.cv_results_[ 'mean_train_score' ]\n",
    "train_stds = gsearch2_2.cv_results_[ 'std_train_score' ]\n",
    "\n",
    "pd.DataFrame(gsearch2_2.cv_results_).to_csv('my_preds_maxdepth_min_child_weights_2.csv')\n",
    "\n",
    "# plot results\n",
    "test_scores = np.array(test_means).reshape(len(min_child_weight), len(max_depth))\n",
    "train_scores = np.array(train_means).reshape(len(min_child_weight), len(max_depth))\n",
    "\n",
    "for i, value in enumerate(min_child_weight):\n",
    "    pyplot.plot(max_depth, test_scores[i], label= 'test_min_child_weight:'   + str(value))\n",
    "#for i, value in enumerate(min_child_weight):\n",
    "#    pyplot.plot(max_depth, train_scores[i], label= 'train_min_child_weight:'   + str(value))\n",
    "    \n",
    "pyplot.legend()\n",
    "pyplot.xlabel( 'max_depth' )                                                                                                      \n",
    "pyplot.ylabel( '- Log Loss' )\n",
    "pyplot.savefig( 'max_depth_vs_min_child_weght2.png' )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [],
   "source": [
    "#最终调优完成的max_depth为7 min_child_weigh为4"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [],
   "source": [
    "##整理数据 再次调整弱分类器项目"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [],
   "source": [
    "def modelfit(alg, X_train, y_train, useTrainCV=True, cv_folds=None, early_stopping_rounds=100):\n",
    "    \n",
    "    if useTrainCV:\n",
    "        xgb_param = alg.get_xgb_params()\n",
    "        xgb_param['num_class'] = 3\n",
    "        \n",
    "        xgtrain = xgb.DMatrix(X_train, label = y_train)\n",
    "        \n",
    "        cvresult = xgb.cv(xgb_param, xgtrain, num_boost_round=alg.get_params()['n_estimators'], folds =cv_folds,\n",
    "                         metrics='mlogloss', early_stopping_rounds=early_stopping_rounds)\n",
    "        \n",
    "        n_estimators = cvresult.shape[0]\n",
    "        alg.set_params(n_estimators = n_estimators)\n",
    "        \n",
    "        print (cvresult)\n",
    "        #result = pd.DataFrame(cvresult)   #cv缺省返回结果为DataFrame\n",
    "        #result.to_csv('my_preds.csv', index_label = 'n_estimators')\n",
    "        cvresult.to_csv('my_preds205.csv', index_label = 'n_estimators')\n",
    "        \n",
    "        # plot\n",
    "        test_means = cvresult['test-mlogloss-mean']\n",
    "        test_stds = cvresult['test-mlogloss-std'] \n",
    "        \n",
    "        train_means = cvresult['train-mlogloss-mean']\n",
    "        train_stds = cvresult['train-mlogloss-std'] \n",
    "\n",
    "        x_axis = range(0, n_estimators)\n",
    "        pyplot.errorbar(x_axis, test_means, yerr=test_stds ,label='Test')\n",
    "        pyplot.errorbar(x_axis, train_means, yerr=train_stds ,label='Train')\n",
    "        pyplot.title(\"XGBoost n_estimators vs Log Loss\")\n",
    "        pyplot.xlabel( 'n_estimators' )\n",
    "        pyplot.ylabel( 'Log Loss' )\n",
    "        pyplot.savefig( 'n_estimators205.png' )\n",
    "    \n",
    "    #Fit the algorithm on the data\n",
    "    alg.fit(X_train, y_train, eval_metric='mlogloss')\n",
    "        \n",
    "    #Predict training set:\n",
    "    train_predprob = alg.predict_proba(X_train)\n",
    "    logloss = log_loss(y_train, train_predprob)\n",
    "\n",
    "        \n",
    "    #Print model report:\n",
    "    print (\"logloss of train :\" )\n",
    "    print (logloss)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "     test-mlogloss-mean  test-mlogloss-std  train-mlogloss-mean  \\\n",
      "0              1.037608           0.000220             1.036037   \n",
      "1              0.986954           0.000532             0.983950   \n",
      "2              0.943084           0.000518             0.938817   \n",
      "3              0.906023           0.000464             0.900425   \n",
      "4              0.873697           0.000627             0.866704   \n",
      "5              0.845572           0.000504             0.837414   \n",
      "6              0.820710           0.000881             0.811147   \n",
      "7              0.799279           0.001070             0.788198   \n",
      "8              0.780236           0.000991             0.767811   \n",
      "9              0.763365           0.000732             0.749587   \n",
      "10             0.748876           0.000426             0.733842   \n",
      "11             0.735484           0.000418             0.719200   \n",
      "12             0.723841           0.000628             0.706540   \n",
      "13             0.713180           0.000595             0.694842   \n",
      "14             0.703824           0.000865             0.684427   \n",
      "15             0.695440           0.000950             0.674929   \n",
      "16             0.688082           0.000714             0.666489   \n",
      "17             0.681416           0.000768             0.658660   \n",
      "18             0.675368           0.000795             0.651590   \n",
      "19             0.669685           0.000885             0.644992   \n",
      "20             0.664883           0.000873             0.639160   \n",
      "21             0.660338           0.001110             0.633203   \n",
      "22             0.656172           0.001287             0.628184   \n",
      "23             0.652437           0.001355             0.623256   \n",
      "24             0.649164           0.001304             0.618754   \n",
      "25             0.645998           0.001484             0.614387   \n",
      "26             0.643041           0.001680             0.610495   \n",
      "27             0.640214           0.001778             0.606835   \n",
      "28             0.637582           0.001774             0.603380   \n",
      "29             0.635219           0.001813             0.599836   \n",
      "..                  ...                ...                  ...   \n",
      "175            0.591733           0.002614             0.448503   \n",
      "176            0.591793           0.002604             0.447814   \n",
      "177            0.591729           0.002641             0.447251   \n",
      "178            0.591655           0.002632             0.446561   \n",
      "179            0.591813           0.002584             0.445914   \n",
      "180            0.591832           0.002535             0.445233   \n",
      "181            0.591831           0.002593             0.444539   \n",
      "182            0.591805           0.002664             0.444037   \n",
      "183            0.591846           0.002683             0.443461   \n",
      "184            0.591834           0.002622             0.442905   \n",
      "185            0.591873           0.002745             0.442210   \n",
      "186            0.591833           0.002832             0.441450   \n",
      "187            0.591871           0.002850             0.440983   \n",
      "188            0.591974           0.002829             0.440369   \n",
      "189            0.592038           0.002852             0.439794   \n",
      "190            0.592053           0.002792             0.439283   \n",
      "191            0.592094           0.002732             0.438771   \n",
      "192            0.592097           0.002771             0.438165   \n",
      "193            0.592276           0.002810             0.437598   \n",
      "194            0.592299           0.002762             0.437059   \n",
      "195            0.592364           0.002733             0.436589   \n",
      "196            0.592345           0.002830             0.435988   \n",
      "197            0.592196           0.002836             0.435460   \n",
      "198            0.592249           0.002761             0.435011   \n",
      "199            0.592327           0.002682             0.434511   \n",
      "200            0.592306           0.002568             0.433880   \n",
      "201            0.592399           0.002635             0.433319   \n",
      "202            0.592427           0.002661             0.432645   \n",
      "203            0.592497           0.002652             0.432207   \n",
      "204            0.592478           0.002633             0.431648   \n",
      "\n",
      "     train-mlogloss-std  \n",
      "0              0.000169  \n",
      "1              0.000516  \n",
      "2              0.000487  \n",
      "3              0.000785  \n",
      "4              0.001063  \n",
      "5              0.000554  \n",
      "6              0.000746  \n",
      "7              0.001144  \n",
      "8              0.001047  \n",
      "9              0.001316  \n",
      "10             0.001555  \n",
      "11             0.001589  \n",
      "12             0.001572  \n",
      "13             0.001692  \n",
      "14             0.001485  \n",
      "15             0.001526  \n",
      "16             0.001924  \n",
      "17             0.001990  \n",
      "18             0.001926  \n",
      "19             0.002030  \n",
      "20             0.002212  \n",
      "21             0.002150  \n",
      "22             0.001988  \n",
      "23             0.002201  \n",
      "24             0.002213  \n",
      "25             0.002031  \n",
      "26             0.001755  \n",
      "27             0.001686  \n",
      "28             0.001727  \n",
      "29             0.001623  \n",
      "..                  ...  \n",
      "175            0.001280  \n",
      "176            0.001249  \n",
      "177            0.001191  \n",
      "178            0.001202  \n",
      "179            0.001223  \n",
      "180            0.001199  \n",
      "181            0.001211  \n",
      "182            0.001107  \n",
      "183            0.001092  \n",
      "184            0.001120  \n",
      "185            0.001095  \n",
      "186            0.001167  \n",
      "187            0.001168  \n",
      "188            0.001180  \n",
      "189            0.001183  \n",
      "190            0.001172  \n",
      "191            0.001058  \n",
      "192            0.001072  \n",
      "193            0.001075  \n",
      "194            0.001158  \n",
      "195            0.001234  \n",
      "196            0.001239  \n",
      "197            0.001193  \n",
      "198            0.001309  \n",
      "199            0.001466  \n",
      "200            0.001434  \n",
      "201            0.001431  \n",
      "202            0.001361  \n",
      "203            0.001345  \n",
      "204            0.001232  \n",
      "\n",
      "[205 rows x 4 columns]\n",
      "logloss of train :\n",
      "0.4614847829605858\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x267855d6d68>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#调整max_depth和min_child_weight之后再次调整n_estimators(7,4)\n",
    "xgb2_3 = XGBClassifier(\n",
    "        learning_rate =0.1,\n",
    "        n_estimators=205,  #数值大没关系，cv会自动返回合适的n_estimators\n",
    "        max_depth=7,\n",
    "        min_child_weight=4,\n",
    "        gamma=0,\n",
    "        subsample=0.3,\n",
    "        colsample_bytree=0.8,\n",
    "        colsample_bylevel=0.7,\n",
    "        objective= 'multi:softprob',\n",
    "        seed=3)\n",
    "\n",
    "modelfit(xgb2_3, X_train, y_train, cv_folds = kfold)\n",
    "#from sklearn.model_selection import cross_val_score\n",
    "#results = cross_val_score(xgb2_3, X_train, y_train, metrics='mlogloss', cv=kfold)\n",
    "#print results\n",
    "#print(\"CV logloss: %.2f%% (%.2f%%)\" % (results.mean()*100, results.std()*100))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Anaconda\\lib\\site-packages\\ipykernel_launcher.py:1: FutureWarning: from_csv is deprecated. Please use read_csv(...) instead. Note that some of the default arguments are different, so please refer to the documentation for from_csv when changing your function calls\n",
      "  \"\"\"Entry point for launching an IPython kernel.\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x267856cc710>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "cvresult = pd.DataFrame.from_csv('my_preds205.csv')\n",
    "\n",
    "cvresult = cvresult.iloc[100:]\n",
    "# plot\n",
    "test_means = cvresult['test-mlogloss-mean']\n",
    "test_stds = cvresult['test-mlogloss-std'] \n",
    "        \n",
    "train_means = cvresult['train-mlogloss-mean']\n",
    "train_stds = cvresult['train-mlogloss-std'] \n",
    "\n",
    "x_axis = range(100,cvresult.shape[0]+100)\n",
    "        \n",
    "fig = pyplot.figure(figsize=(10, 10), dpi=100)\n",
    "pyplot.errorbar(x_axis, test_means, yerr=test_stds ,label='Test')\n",
    "pyplot.errorbar(x_axis, train_means, yerr=train_stds ,label='Train')\n",
    "pyplot.title(\"XGBoost n_estimators vs Log Loss\")\n",
    "pyplot.xlabel( 'n_estimators' )\n",
    "pyplot.ylabel( 'Log Loss' )\n",
    "pyplot.savefig( 'n_estimators_detail205.png' )\n",
    "\n",
    "pyplot.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.4614847829605858"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#logloss of train :\n",
    "0.4614847829605858"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [],
   "source": [
    "#调整树的参数：subsample 和 colsample_bytree"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'colsample_bytree': [0.6, 0.7, 0.8, 0.9],\n",
       " 'subsample': [0.3, 0.4, 0.5, 0.6, 0.7, 0.8]}"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#max_depth 建议3-10， min_child_weight=1／sqrt(ratio_rare_event) =5.5\n",
    "subsample = [i/10.0 for i in range(3,9)]\n",
    "colsample_bytree = [i/10.0 for i in range(6,10)]\n",
    "param_test2_3 = dict(subsample=subsample, colsample_bytree=colsample_bytree)\n",
    "param_test2_3\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Anaconda\\lib\\site-packages\\sklearn\\model_selection\\_search.py:761: DeprecationWarning: The grid_scores_ attribute was deprecated in version 0.18 in favor of the more elaborate cv_results_ attribute. The grid_scores_ attribute will not be available from 0.20\n",
      "  DeprecationWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "([mean: -0.58901, std: 0.00355, params: {'colsample_bytree': 0.6, 'subsample': 0.3},\n",
       "  mean: -0.58555, std: 0.00337, params: {'colsample_bytree': 0.6, 'subsample': 0.4},\n",
       "  mean: -0.58452, std: 0.00400, params: {'colsample_bytree': 0.6, 'subsample': 0.5},\n",
       "  mean: -0.58310, std: 0.00467, params: {'colsample_bytree': 0.6, 'subsample': 0.6},\n",
       "  mean: -0.58114, std: 0.00401, params: {'colsample_bytree': 0.6, 'subsample': 0.7},\n",
       "  mean: -0.58110, std: 0.00415, params: {'colsample_bytree': 0.6, 'subsample': 0.8},\n",
       "  mean: -0.58969, std: 0.00392, params: {'colsample_bytree': 0.7, 'subsample': 0.3},\n",
       "  mean: -0.58616, std: 0.00343, params: {'colsample_bytree': 0.7, 'subsample': 0.4},\n",
       "  mean: -0.58378, std: 0.00374, params: {'colsample_bytree': 0.7, 'subsample': 0.5},\n",
       "  mean: -0.58211, std: 0.00367, params: {'colsample_bytree': 0.7, 'subsample': 0.6},\n",
       "  mean: -0.58119, std: 0.00339, params: {'colsample_bytree': 0.7, 'subsample': 0.7},\n",
       "  mean: -0.57956, std: 0.00312, params: {'colsample_bytree': 0.7, 'subsample': 0.8},\n",
       "  mean: -0.58772, std: 0.00407, params: {'colsample_bytree': 0.8, 'subsample': 0.3},\n",
       "  mean: -0.58619, std: 0.00401, params: {'colsample_bytree': 0.8, 'subsample': 0.4},\n",
       "  mean: -0.58379, std: 0.00386, params: {'colsample_bytree': 0.8, 'subsample': 0.5},\n",
       "  mean: -0.58201, std: 0.00455, params: {'colsample_bytree': 0.8, 'subsample': 0.6},\n",
       "  mean: -0.58137, std: 0.00385, params: {'colsample_bytree': 0.8, 'subsample': 0.7},\n",
       "  mean: -0.58052, std: 0.00382, params: {'colsample_bytree': 0.8, 'subsample': 0.8},\n",
       "  mean: -0.59009, std: 0.00307, params: {'colsample_bytree': 0.9, 'subsample': 0.3},\n",
       "  mean: -0.58708, std: 0.00338, params: {'colsample_bytree': 0.9, 'subsample': 0.4},\n",
       "  mean: -0.58402, std: 0.00434, params: {'colsample_bytree': 0.9, 'subsample': 0.5},\n",
       "  mean: -0.58267, std: 0.00460, params: {'colsample_bytree': 0.9, 'subsample': 0.6},\n",
       "  mean: -0.58228, std: 0.00364, params: {'colsample_bytree': 0.9, 'subsample': 0.7},\n",
       "  mean: -0.58093, std: 0.00449, params: {'colsample_bytree': 0.9, 'subsample': 0.8}],\n",
       " {'colsample_bytree': 0.7, 'subsample': 0.8},\n",
       " -0.5795585735159263)"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "xgb3_1 = XGBClassifier(\n",
    "        learning_rate =0.1,\n",
    "        n_estimators=205,  #第二轮参数调整得到的n_estimators最优值\n",
    "        max_depth=7,\n",
    "        min_child_weight=4,\n",
    "        gamma=0,\n",
    "        subsample=0.3,\n",
    "        colsample_bytree=0.8,\n",
    "        colsample_bylevel = 0.7,\n",
    "        objective= 'multi:softprob',\n",
    "        seed=3)\n",
    "\n",
    "\n",
    "gsearch3_1 = GridSearchCV(xgb3_1, param_grid = param_test2_3, scoring='neg_log_loss',n_jobs=-1, cv=kfold)\n",
    "gsearch3_1.fit(X_train , y_train)\n",
    "\n",
    "gsearch3_1.grid_scores_, gsearch3_1.best_params_,     gsearch3_1.best_score_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('mean_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split0_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split1_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split2_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split3_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split4_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('std_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "{'mean_fit_time': array([176.44991055, 203.24463201, 211.26882272, 213.59033642,\n",
       "        211.8867569 , 200.87637401, 214.4659596 , 236.88643045,\n",
       "        249.33090358, 260.1794426 , 248.31172433, 243.0507278 ,\n",
       "        249.27568631, 280.19252687, 294.4234818 , 291.46380949,\n",
       "        294.69753833, 268.61252828, 283.81133709, 298.77140126,\n",
       "        345.67756667, 431.45945868, 499.27325549, 415.56857715]),\n",
       " 'mean_score_time': array([0.68803039, 0.68853168, 0.66176009, 0.68572383, 0.69625525,\n",
       "        0.67461982, 0.76052299, 0.74287624, 0.75731473, 0.69715462,\n",
       "        0.74207406, 0.72412667, 0.7273355 , 0.70006247, 0.74668636,\n",
       "        0.72322421, 0.70417256, 0.70561485, 0.68472176, 0.68040986,\n",
       "        1.13973212, 1.09210496, 1.15728445, 0.63039179]),\n",
       " 'mean_test_score': array([-0.58900521, -0.58554931, -0.5845187 , -0.58310233, -0.5811354 ,\n",
       "        -0.58109522, -0.58968612, -0.5861588 , -0.58378426, -0.58211406,\n",
       "        -0.58118941, -0.57955857, -0.58771534, -0.58619336, -0.58379282,\n",
       "        -0.58200605, -0.58137058, -0.58052411, -0.59008816, -0.58708408,\n",
       "        -0.58401824, -0.58266716, -0.58227826, -0.58093159]),\n",
       " 'mean_train_score': array([-0.45407328, -0.44528197, -0.43993572, -0.43661243, -0.43331867,\n",
       "        -0.43371956, -0.45124098, -0.44217741, -0.43581606, -0.43351229,\n",
       "        -0.4311372 , -0.43037703, -0.44740438, -0.43753316, -0.43151137,\n",
       "        -0.42811135, -0.42651503, -0.42712101, -0.44393497, -0.43352281,\n",
       "        -0.42842065, -0.42509961, -0.42302222, -0.42328552]),\n",
       " 'param_colsample_bytree': masked_array(data=[0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.7, 0.7, 0.7, 0.7, 0.7,\n",
       "                    0.7, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.9, 0.9, 0.9, 0.9,\n",
       "                    0.9, 0.9],\n",
       "              mask=[False, False, False, False, False, False, False, False,\n",
       "                    False, False, False, False, False, False, False, False,\n",
       "                    False, False, False, False, False, False, False, False],\n",
       "        fill_value='?',\n",
       "             dtype=object),\n",
       " 'param_subsample': masked_array(data=[0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.3, 0.4, 0.5, 0.6, 0.7,\n",
       "                    0.8, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.3, 0.4, 0.5, 0.6,\n",
       "                    0.7, 0.8],\n",
       "              mask=[False, False, False, False, False, False, False, False,\n",
       "                    False, False, False, False, False, False, False, False,\n",
       "                    False, False, False, False, False, False, False, False],\n",
       "        fill_value='?',\n",
       "             dtype=object),\n",
       " 'params': [{'colsample_bytree': 0.6, 'subsample': 0.3},\n",
       "  {'colsample_bytree': 0.6, 'subsample': 0.4},\n",
       "  {'colsample_bytree': 0.6, 'subsample': 0.5},\n",
       "  {'colsample_bytree': 0.6, 'subsample': 0.6},\n",
       "  {'colsample_bytree': 0.6, 'subsample': 0.7},\n",
       "  {'colsample_bytree': 0.6, 'subsample': 0.8},\n",
       "  {'colsample_bytree': 0.7, 'subsample': 0.3},\n",
       "  {'colsample_bytree': 0.7, 'subsample': 0.4},\n",
       "  {'colsample_bytree': 0.7, 'subsample': 0.5},\n",
       "  {'colsample_bytree': 0.7, 'subsample': 0.6},\n",
       "  {'colsample_bytree': 0.7, 'subsample': 0.7},\n",
       "  {'colsample_bytree': 0.7, 'subsample': 0.8},\n",
       "  {'colsample_bytree': 0.8, 'subsample': 0.3},\n",
       "  {'colsample_bytree': 0.8, 'subsample': 0.4},\n",
       "  {'colsample_bytree': 0.8, 'subsample': 0.5},\n",
       "  {'colsample_bytree': 0.8, 'subsample': 0.6},\n",
       "  {'colsample_bytree': 0.8, 'subsample': 0.7},\n",
       "  {'colsample_bytree': 0.8, 'subsample': 0.8},\n",
       "  {'colsample_bytree': 0.9, 'subsample': 0.3},\n",
       "  {'colsample_bytree': 0.9, 'subsample': 0.4},\n",
       "  {'colsample_bytree': 0.9, 'subsample': 0.5},\n",
       "  {'colsample_bytree': 0.9, 'subsample': 0.6},\n",
       "  {'colsample_bytree': 0.9, 'subsample': 0.7},\n",
       "  {'colsample_bytree': 0.9, 'subsample': 0.8}],\n",
       " 'rank_test_score': array([22, 17, 16, 12,  5,  4, 23, 18, 13,  9,  6,  1, 21, 19, 14,  8,  7,\n",
       "         2, 24, 20, 15, 11, 10,  3]),\n",
       " 'split0_test_score': array([-0.58402483, -0.58047557, -0.57770645, -0.57488119, -0.57505804,\n",
       "        -0.57486424, -0.58274834, -0.58112568, -0.57703374, -0.57572491,\n",
       "        -0.57477086, -0.5746982 , -0.58027512, -0.58000697, -0.57797381,\n",
       "        -0.57459855, -0.57530732, -0.57370304, -0.58453698, -0.58125796,\n",
       "        -0.57688276, -0.57511176, -0.57542875, -0.57328027]),\n",
       " 'split0_train_score': array([-0.45591431, -0.44740818, -0.44147053, -0.43924322, -0.43573203,\n",
       "        -0.43595045, -0.45547717, -0.44480654, -0.43859265, -0.43713656,\n",
       "        -0.4329926 , -0.43236031, -0.44776375, -0.43848467, -0.43286568,\n",
       "        -0.42897048, -0.42704265, -0.42897481, -0.44633073, -0.43463393,\n",
       "        -0.42904009, -0.4244374 , -0.42604102, -0.42397933]),\n",
       " 'split1_test_score': array([-0.58580709, -0.58411463, -0.58375834, -0.58192557, -0.57849453,\n",
       "        -0.57908401, -0.58896969, -0.583401  , -0.582851  , -0.58113177,\n",
       "        -0.5819414 , -0.57812817, -0.58715149, -0.58304779, -0.58147506,\n",
       "        -0.58099321, -0.57933353, -0.57969189, -0.58943067, -0.58675534,\n",
       "        -0.58273563, -0.5802388 , -0.58161848, -0.57973187]),\n",
       " 'split1_train_score': array([-0.45204706, -0.44363494, -0.43818908, -0.43461285, -0.43389749,\n",
       "        -0.43306267, -0.44986576, -0.44079802, -0.43350738, -0.43168432,\n",
       "        -0.43007826, -0.42881274, -0.44713299, -0.43847349, -0.43019312,\n",
       "        -0.42769936, -0.42595031, -0.42538182, -0.44307055, -0.43308643,\n",
       "        -0.42926088, -0.42612432, -0.42183407, -0.42427058]),\n",
       " 'split2_test_score': array([-0.58987956, -0.58663268, -0.58481483, -0.58404166, -0.58149153,\n",
       "        -0.58017462, -0.5922762 , -0.58694782, -0.58483314, -0.58299429,\n",
       "        -0.58186545, -0.57925482, -0.58898455, -0.58793408, -0.58361204,\n",
       "        -0.58110705, -0.58139316, -0.5811258 , -0.59151354, -0.58927345,\n",
       "        -0.58360192, -0.58397166, -0.58498806, -0.58082102]),\n",
       " 'split2_train_score': array([-0.45565743, -0.44551139, -0.43997574, -0.43644817, -0.43177263,\n",
       "        -0.43264744, -0.44933784, -0.44329951, -0.4356323 , -0.43488815,\n",
       "        -0.43162364, -0.43226759, -0.44688043, -0.43797967, -0.4335192 ,\n",
       "        -0.42916613, -0.42669567, -0.42687981, -0.44327507, -0.43209556,\n",
       "        -0.42695564, -0.42520484, -0.4220776 , -0.42324053]),\n",
       " 'split3_test_score': array([-0.59310576, -0.58571721, -0.58636495, -0.58607277, -0.58453805,\n",
       "        -0.58606599, -0.59011959, -0.58903247, -0.58672095, -0.58398882,\n",
       "        -0.58253693, -0.58205214, -0.58986939, -0.58959497, -0.58741882,\n",
       "        -0.58535198, -0.58585402, -0.58356609, -0.59141686, -0.58678358,\n",
       "        -0.58731342, -0.5857073 , -0.58448623, -0.58481633]),\n",
       " 'split3_train_score': array([-0.45323516, -0.44439637, -0.4413199 , -0.43529072, -0.43355995,\n",
       "        -0.43488197, -0.45116338, -0.44064464, -0.43534888, -0.43230778,\n",
       "        -0.43222716, -0.43109078, -0.44603799, -0.43398543, -0.42864678,\n",
       "        -0.42652749, -0.42622728, -0.42705161, -0.44172589, -0.43462373,\n",
       "        -0.42831902, -0.42527602, -0.42248232, -0.42304205]),\n",
       " 'split4_test_score': array([-0.59220977, -0.59080807, -0.58995057, -0.58859212, -0.58609638,\n",
       "        -0.58528851, -0.5943182 , -0.59028829, -0.58748357, -0.58673192,\n",
       "        -0.58483352, -0.58366078, -0.59229753, -0.59038427, -0.5884858 ,\n",
       "        -0.58798129, -0.58496597, -0.58453494, -0.5935438 , -0.59135138,\n",
       "        -0.58955916, -0.58830796, -0.58487056, -0.58601001]),\n",
       " 'split4_train_score': array([-0.45351246, -0.44545896, -0.43872336, -0.43746717, -0.43163125,\n",
       "        -0.43205529, -0.45036072, -0.44133834, -0.43599908, -0.43154464,\n",
       "        -0.42876433, -0.42735372, -0.44920673, -0.43874252, -0.43233208,\n",
       "        -0.42819332, -0.42665925, -0.42731699, -0.44527262, -0.4331744 ,\n",
       "        -0.42852764, -0.42445546, -0.42267609, -0.42189513]),\n",
       " 'std_fit_time': array([ 5.24403609,  4.78061404,  5.86306837,  6.19370083,  4.96540189,\n",
       "         7.17914669,  7.78946292,  7.98528513,  7.13834749,  3.90818932,\n",
       "         4.10455357,  5.77609235,  2.97885054,  7.80618259,  8.56879622,\n",
       "         2.64561969,  7.17279654,  1.3035681 , 10.63737374, 11.41322462,\n",
       "        32.35978039, 24.95105658, 49.80894316, 57.63742243]),\n",
       " 'std_score_time': array([0.03257312, 0.02719157, 0.01194843, 0.03223863, 0.04999155,\n",
       "        0.02625736, 0.08808201, 0.06615583, 0.06531692, 0.03563344,\n",
       "        0.05297403, 0.04550448, 0.06449644, 0.03706748, 0.05048943,\n",
       "        0.03654634, 0.03576813, 0.02372884, 0.02408206, 0.02287179,\n",
       "        0.32403085, 0.1663369 , 0.193984  , 0.05605533]),\n",
       " 'std_test_score': array([0.0035463 , 0.00336608, 0.00399956, 0.00466504, 0.00400555,\n",
       "        0.00414752, 0.0039242 , 0.00343131, 0.00373764, 0.00367146,\n",
       "        0.00338571, 0.00312427, 0.00407236, 0.00400825, 0.00385838,\n",
       "        0.00455191, 0.00384556, 0.00381894, 0.00306548, 0.00338062,\n",
       "        0.00434258, 0.00459871, 0.00364119, 0.00449164]),\n",
       " 'std_train_score': array([0.00148469, 0.00127293, 0.00132618, 0.00163853, 0.00151362,\n",
       "        0.00146142, 0.00220179, 0.00162034, 0.00163248, 0.0021768 ,\n",
       "        0.0015244 , 0.00198012, 0.00105762, 0.00179097, 0.00181564,\n",
       "        0.00095244, 0.00038302, 0.00114567, 0.00164874, 0.00097933,\n",
       "        0.00080718, 0.00062381, 0.00153808, 0.00083021])}"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "gsearch3_1.cv_results_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('mean_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('std_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split0_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split1_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split2_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split3_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split4_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Best: -0.579559 using {'colsample_bytree': 0.7, 'subsample': 0.8}\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x26785630c18>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# summarize results\n",
    "print(\"Best: %f using %s\" % (gsearch3_1.best_score_, gsearch3_1.best_params_))\n",
    "test_means = gsearch3_1.cv_results_[ 'mean_test_score' ]\n",
    "test_stds = gsearch3_1.cv_results_[ 'std_test_score' ]\n",
    "train_means = gsearch3_1.cv_results_[ 'mean_train_score' ]\n",
    "train_stds = gsearch3_1.cv_results_[ 'std_train_score' ]\n",
    "\n",
    "pd.DataFrame(gsearch3_1.cv_results_).to_csv('my_preds_subsampleh_colsample_bytree_1.csv')\n",
    "\n",
    "# plot results\n",
    "test_scores = np.array(test_means).reshape(len(colsample_bytree), len(subsample))\n",
    "train_scores = np.array(train_means).reshape(len(colsample_bytree), len(subsample))\n",
    "\n",
    "for i, value in enumerate(colsample_bytree):\n",
    "    pyplot.plot(subsample, -test_scores[i], label= 'test_colsample_bytree:'   + str(value))\n",
    "#for i, value in enumerate(min_child_weight):\n",
    "#    pyplot.plot(max_depth, train_scores[i], label= 'train_min_child_weight:'   + str(value))\n",
    "    \n",
    "pyplot.legend()\n",
    "pyplot.xlabel( 'subsample' )                                                                                                      \n",
    "pyplot.ylabel( 'Log Loss' )\n",
    "pyplot.savefig( 'subsample_vs_colsample_bytree1.png' )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [],
   "source": [
    "#调整正则化参数：reg_alpha 和reg_lambda"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'reg_alpha': [1.5, 2], 'reg_lambda': [0.5, 1, 2]}"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#reg_alpha = [1e-3, 1e-2, 0.05, 0.1]    #default = 0\n",
    "#reg_lambda = [1e-3, 1e-2, 0.05, 0.1]   #default = 1\n",
    "\n",
    "reg_alpha = [ 1.5, 2]    #default = 0, 测试0.1,1，1.5，2\n",
    "reg_lambda = [0.5, 1, 2]      #default = 1，测试0.1， 0.5， 1，2\n",
    "\n",
    "param_test2_4 = dict(reg_alpha=reg_alpha, reg_lambda=reg_lambda)\n",
    "param_test2_4\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Anaconda\\lib\\site-packages\\sklearn\\model_selection\\_search.py:761: DeprecationWarning: The grid_scores_ attribute was deprecated in version 0.18 in favor of the more elaborate cv_results_ attribute. The grid_scores_ attribute will not be available from 0.20\n",
      "  DeprecationWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "([mean: -0.57942, std: 0.00342, params: {'reg_alpha': 1.5, 'reg_lambda': 0.5},\n",
       "  mean: -0.58007, std: 0.00282, params: {'reg_alpha': 1.5, 'reg_lambda': 1},\n",
       "  mean: -0.57967, std: 0.00333, params: {'reg_alpha': 1.5, 'reg_lambda': 2},\n",
       "  mean: -0.58008, std: 0.00326, params: {'reg_alpha': 2, 'reg_lambda': 0.5},\n",
       "  mean: -0.58010, std: 0.00291, params: {'reg_alpha': 2, 'reg_lambda': 1},\n",
       "  mean: -0.57962, std: 0.00281, params: {'reg_alpha': 2, 'reg_lambda': 2}],\n",
       " {'reg_alpha': 1.5, 'reg_lambda': 0.5},\n",
       " -0.5794157948044958)"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "xgb5_1 = XGBClassifier(\n",
    "        learning_rate =0.1,\n",
    "        n_estimators=205,  #第二轮参数调整得到的n_estimators最优值\n",
    "        max_depth=7,\n",
    "        min_child_weight=4,\n",
    "        gamma=0,\n",
    "        subsample=0.8,\n",
    "        colsample_bytree=0.7,\n",
    "        colsample_bylevel = 0.7,\n",
    "        objective= 'multi:softprob',\n",
    "        seed=3)\n",
    "\n",
    "\n",
    "gsearch5_1 = GridSearchCV(xgb5_1, param_grid = param_test2_4, scoring='neg_log_loss',n_jobs=-1, cv=kfold)\n",
    "gsearch5_1.fit(X_train , y_train)\n",
    "\n",
    "gsearch5_1.grid_scores_, gsearch5_1.best_params_,     gsearch5_1.best_score_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('mean_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split0_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split1_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split2_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split3_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split4_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('std_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "{'mean_fit_time': array([374.22485104, 506.00484238, 428.13569765, 402.87773089,\n",
       "        430.79081244, 305.07923393]),\n",
       " 'mean_score_time': array([1.24320636, 1.66763582, 1.16790648, 1.5700768 , 0.92286172,\n",
       "        1.00097394]),\n",
       " 'mean_test_score': array([-0.57941579, -0.58007146, -0.57966645, -0.58007806, -0.58010362,\n",
       "        -0.57962475]),\n",
       " 'mean_train_score': array([-0.42682653, -0.42984518, -0.43457237, -0.43054232, -0.43338235,\n",
       "        -0.43720688]),\n",
       " 'param_reg_alpha': masked_array(data=[1.5, 1.5, 1.5, 2, 2, 2],\n",
       "              mask=[False, False, False, False, False, False],\n",
       "        fill_value='?',\n",
       "             dtype=object),\n",
       " 'param_reg_lambda': masked_array(data=[0.5, 1, 2, 0.5, 1, 2],\n",
       "              mask=[False, False, False, False, False, False],\n",
       "        fill_value='?',\n",
       "             dtype=object),\n",
       " 'params': [{'reg_alpha': 1.5, 'reg_lambda': 0.5},\n",
       "  {'reg_alpha': 1.5, 'reg_lambda': 1},\n",
       "  {'reg_alpha': 1.5, 'reg_lambda': 2},\n",
       "  {'reg_alpha': 2, 'reg_lambda': 0.5},\n",
       "  {'reg_alpha': 2, 'reg_lambda': 1},\n",
       "  {'reg_alpha': 2, 'reg_lambda': 2}],\n",
       " 'rank_test_score': array([1, 4, 3, 5, 6, 2]),\n",
       " 'split0_test_score': array([-0.57345425, -0.5752943 , -0.5736662 , -0.57420996, -0.57512587,\n",
       "        -0.57464376]),\n",
       " 'split0_train_score': array([-0.43068296, -0.4324021 , -0.43703708, -0.43287453, -0.43643619,\n",
       "        -0.43968164]),\n",
       " 'split1_test_score': array([-0.57897123, -0.5799911 , -0.57917438, -0.5791619 , -0.57929319,\n",
       "        -0.57904912]),\n",
       " 'split1_train_score': array([-0.42417554, -0.42820183, -0.43348843, -0.43008512, -0.43150273,\n",
       "        -0.43610144]),\n",
       " 'split2_test_score': array([-0.57922067, -0.57925543, -0.58001179, -0.58137923, -0.58008758,\n",
       "        -0.5799425 ]),\n",
       " 'split2_train_score': array([-0.42804946, -0.43013622, -0.43477285, -0.43225102, -0.43494577,\n",
       "        -0.43857442]),\n",
       " 'split3_test_score': array([-0.58205099, -0.58258145, -0.58252157, -0.58206666, -0.58269058,\n",
       "        -0.58174046]),\n",
       " 'split3_train_score': array([-0.4283942 , -0.43117402, -0.43547309, -0.42933421, -0.43392459,\n",
       "        -0.43683819]),\n",
       " 'split4_test_score': array([-0.58338304, -0.58323596, -0.58295929, -0.5835736 , -0.58332187,\n",
       "        -0.58274883]),\n",
       " 'split4_train_score': array([-0.42283047, -0.42731172, -0.43209041, -0.42816674, -0.43010246,\n",
       "        -0.43483873]),\n",
       " 'std_fit_time': array([ 35.16886977,  71.22761721, 122.68391939,  39.0063319 ,\n",
       "         39.58623269,  42.13977953]),\n",
       " 'std_score_time': array([0.09141846, 0.40657801, 0.18543507, 0.25079024, 0.32557101,\n",
       "        0.3398018 ]),\n",
       " 'std_test_score': array([0.00341929, 0.0028216 , 0.00332743, 0.00326006, 0.00291492,\n",
       "        0.00280992]),\n",
       " 'std_train_score': array([0.00289211, 0.00187122, 0.00168887, 0.00177036, 0.00229586,\n",
       "        0.00172978])}"
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "gsearch5_1.cv_results_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('mean_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('std_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split0_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split1_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split2_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split3_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "C:\\Anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split4_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Best: -0.579416 using {'reg_alpha': 1.5, 'reg_lambda': 0.5}\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x267852e6048>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# summarize results\n",
    "print(\"Best: %f using %s\" % (gsearch5_1.best_score_, gsearch5_1.best_params_))\n",
    "test_means = gsearch5_1.cv_results_[ 'mean_test_score' ]\n",
    "test_stds = gsearch5_1.cv_results_[ 'std_test_score' ]\n",
    "train_means = gsearch5_1.cv_results_[ 'mean_train_score' ]\n",
    "train_stds = gsearch5_1.cv_results_[ 'std_train_score' ]\n",
    "\n",
    "pd.DataFrame(gsearch5_1.cv_results_).to_csv('my_preds_reg_alpha_reg_lambda_1.csv')\n",
    "\n",
    "# plot results\n",
    "test_scores = np.array(test_means).reshape(len(reg_alpha), len(reg_lambda))\n",
    "train_scores = np.array(train_means).reshape(len(reg_alpha), len(reg_lambda))\n",
    "\n",
    "#log_reg_alpha = [0,0,0,0]\n",
    "#for index in range(len(reg_alpha)):\n",
    "#   log_reg_alpha[index] = math.log10(reg_alpha[index])\n",
    "    \n",
    "for i, value in enumerate(reg_alpha):\n",
    "    pyplot.plot(reg_lambda, -test_scores[i], label= 'reg_alpha:'   + str(value))\n",
    "#for i, value in enumerate(min_child_weight):\n",
    "#    pyplot.plot(max_depth, train_scores[i], label= 'train_min_child_weight:'   + str(value))\n",
    "    \n",
    "pyplot.legend()\n",
    "pyplot.xlabel( 'reg_alpha' )                                                                                                      \n",
    "pyplot.ylabel( '-Log Loss' )\n",
    "pyplot.savefig( 'reg_alpha_vs_reg_lambda1.png' )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [],
   "source": [
    "#参数调优完毕 读取test文件得出分类"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "     test-mlogloss-mean  test-mlogloss-std  train-mlogloss-mean  \\\n",
      "0              1.086223           0.000146             1.085899   \n",
      "1              1.074228           0.000171             1.073579   \n",
      "2              1.062601           0.000286             1.061651   \n",
      "3              1.051486           0.000458             1.050224   \n",
      "4              1.040562           0.000411             1.038981   \n",
      "5              1.030080           0.000497             1.028205   \n",
      "6              1.019726           0.000519             1.017575   \n",
      "7              1.009794           0.000619             1.007369   \n",
      "8              1.000130           0.000661             0.997385   \n",
      "9              0.990830           0.000661             0.987810   \n",
      "10             0.981769           0.000737             0.978459   \n",
      "11             0.972956           0.000831             0.969353   \n",
      "12             0.964358           0.000857             0.960461   \n",
      "13             0.956131           0.000924             0.951932   \n",
      "14             0.948036           0.001000             0.943539   \n",
      "15             0.940208           0.001026             0.935420   \n",
      "16             0.932535           0.001058             0.927482   \n",
      "17             0.925137           0.001073             0.919793   \n",
      "18             0.917962           0.001127             0.912330   \n",
      "19             0.910942           0.001092             0.904990   \n",
      "20             0.904195           0.001113             0.897958   \n",
      "21             0.897587           0.001137             0.891111   \n",
      "22             0.891131           0.001158             0.884387   \n",
      "23             0.884857           0.001155             0.877794   \n",
      "24             0.878822           0.001155             0.871440   \n",
      "25             0.872945           0.001211             0.865318   \n",
      "26             0.867091           0.001192             0.859213   \n",
      "27             0.861462           0.001202             0.853323   \n",
      "28             0.855944           0.001220             0.847517   \n",
      "29             0.850568           0.001224             0.841864   \n",
      "..                  ...                ...                  ...   \n",
      "175            0.623823           0.003305             0.581662   \n",
      "176            0.623496           0.003328             0.581129   \n",
      "177            0.623163           0.003299             0.580601   \n",
      "178            0.622862           0.003333             0.580072   \n",
      "179            0.622569           0.003323             0.579589   \n",
      "180            0.622237           0.003338             0.579041   \n",
      "181            0.621938           0.003350             0.578514   \n",
      "182            0.621639           0.003397             0.577985   \n",
      "183            0.621366           0.003397             0.577527   \n",
      "184            0.621071           0.003346             0.577011   \n",
      "185            0.620787           0.003393             0.576534   \n",
      "186            0.620493           0.003418             0.575992   \n",
      "187            0.620218           0.003425             0.575497   \n",
      "188            0.619894           0.003393             0.574992   \n",
      "189            0.619608           0.003416             0.574515   \n",
      "190            0.619338           0.003431             0.574042   \n",
      "191            0.619051           0.003499             0.573563   \n",
      "192            0.618783           0.003511             0.573123   \n",
      "193            0.618490           0.003511             0.572648   \n",
      "194            0.618246           0.003522             0.572239   \n",
      "195            0.617952           0.003529             0.571744   \n",
      "196            0.617676           0.003547             0.571277   \n",
      "197            0.617458           0.003562             0.570905   \n",
      "198            0.617214           0.003568             0.570442   \n",
      "199            0.616983           0.003567             0.570042   \n",
      "200            0.616730           0.003544             0.569620   \n",
      "201            0.616482           0.003542             0.569160   \n",
      "202            0.616240           0.003542             0.568694   \n",
      "203            0.616007           0.003545             0.568259   \n",
      "204            0.615763           0.003541             0.567746   \n",
      "\n",
      "     train-mlogloss-std  \n",
      "0              0.000118  \n",
      "1              0.000081  \n",
      "2              0.000089  \n",
      "3              0.000251  \n",
      "4              0.000146  \n",
      "5              0.000189  \n",
      "6              0.000279  \n",
      "7              0.000242  \n",
      "8              0.000322  \n",
      "9              0.000460  \n",
      "10             0.000423  \n",
      "11             0.000424  \n",
      "12             0.000483  \n",
      "13             0.000465  \n",
      "14             0.000494  \n",
      "15             0.000584  \n",
      "16             0.000597  \n",
      "17             0.000657  \n",
      "18             0.000722  \n",
      "19             0.000609  \n",
      "20             0.000621  \n",
      "21             0.000659  \n",
      "22             0.000674  \n",
      "23             0.000792  \n",
      "24             0.000737  \n",
      "25             0.000787  \n",
      "26             0.000812  \n",
      "27             0.000824  \n",
      "28             0.000891  \n",
      "29             0.000930  \n",
      "..                  ...  \n",
      "175            0.001869  \n",
      "176            0.001859  \n",
      "177            0.001929  \n",
      "178            0.001903  \n",
      "179            0.001901  \n",
      "180            0.001947  \n",
      "181            0.001896  \n",
      "182            0.001841  \n",
      "183            0.001840  \n",
      "184            0.001869  \n",
      "185            0.001833  \n",
      "186            0.001795  \n",
      "187            0.001751  \n",
      "188            0.001768  \n",
      "189            0.001751  \n",
      "190            0.001774  \n",
      "191            0.001740  \n",
      "192            0.001708  \n",
      "193            0.001677  \n",
      "194            0.001673  \n",
      "195            0.001628  \n",
      "196            0.001600  \n",
      "197            0.001593  \n",
      "198            0.001615  \n",
      "199            0.001630  \n",
      "200            0.001622  \n",
      "201            0.001639  \n",
      "202            0.001687  \n",
      "203            0.001650  \n",
      "204            0.001664  \n",
      "\n",
      "[205 rows x 4 columns]\n",
      "logloss of train :\n",
      "0.577756308269391\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x267852cf7b8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "xgb6 = XGBClassifier(\n",
    "        learning_rate =0.02,\n",
    "        n_estimators=205,  #数值大没关系，cv会自动返回合适的n_estimators\n",
    "        max_depth=7,\n",
    "        min_child_weight=4,\n",
    "        gamma=0,\n",
    "        subsample = 0.8,\n",
    "        colsample_bytree=0.7,\n",
    "        colsample_bylevel=0.7,\n",
    "        reg_alpha = 1.5,\n",
    "        reg_lambda = 0.5,\n",
    "        objective= 'multi:softprob',\n",
    "        seed=3)\n",
    "\n",
    "modelfit(xgb6, X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'base_score': 0.5,\n",
       " 'booster': 'gbtree',\n",
       " 'colsample_bylevel': 0.7,\n",
       " 'colsample_bytree': 0.7,\n",
       " 'gamma': 0,\n",
       " 'learning_rate': 0.02,\n",
       " 'max_delta_step': 0,\n",
       " 'max_depth': 7,\n",
       " 'min_child_weight': 4,\n",
       " 'missing': None,\n",
       " 'n_estimators': 205,\n",
       " 'nthread': 1,\n",
       " 'objective': 'multi:softprob',\n",
       " 'reg_alpha': 1.5,\n",
       " 'reg_lambda': 0.5,\n",
       " 'scale_pos_weight': 1,\n",
       " 'seed': 3,\n",
       " 'silent': 1,\n",
       " 'subsample': 0.8}"
      ]
     },
     "execution_count": 50,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "xgb6.get_xgb_params()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [],
   "source": [
    "#训练好的模型开始读取测试文件\n",
    "import pickle\n",
    "\n",
    "pickle.dump(xgb6, open(\"xgb_model.pkl\", 'wb'))\n",
    "xgb = pickle.load(open(\"xgb_model.pkl\", 'rb'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "y_test = xgb.predict_proba(test)\n",
    "\n",
    "out_df1 = pd.DataFrame(y_test)\n",
    "out_df1.columns = [\"high\", \"medium\", \"low\"]\n",
    "#读取完毕 保存到文件中\n",
    "out_df = pd.concat([out_df1], axis = 1)\n",
    "out_df.to_csv(\"xgb_results.csv\", index=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
